我在数据库中保存塞尔维亚拉丁字符时遇到问题,但只有当我从 jsf 应用程序保存它时才会出现问题。当我直接使用 SQLyog 在数据库中插入一些行时,一切都很好。当我尝试从应用程序插入某些内容而不是字符时:č
, ć
and đ
在数据库中插入问号。
另一方面,当我从数据库中读取该行时,所有内容都显示正确,没有问号。
当我尝试从应用程序插入某些内容而不是字符时:数据库中的 č、ć 和 đ 会插入问号。
换句话说,MySQL JDBC 驱动程序不支持最初提交字符时使用的字符编码。当向数据库发送字符数据时,MySQL JDBC 驱动程序默认使用平台默认编码,例如可以是 ISO 8859-1。您需要通过指定来告诉它不要这样做useUnicode
and characterEncoding
JDBC URL 中的参数。
jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8
当您使用 Facelets 作为视图技术时,JSF 在呈现 HTML 内容和处理提交的参数值时本身已经默认为 UTF-8。所以问题至少不在那里。
也可以看看:
-
Unicode - 如何获得正确的字符? - 数据库
- MySQL 连接器/J 手册 - 19.3.4.4。使用字符集和 Unicode
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)