在数据库中保存塞尔维亚拉丁字符

时间:2011-09-05 18:12:58

标签: mysql jsf jdbc character-encoding

我在数据库中保存塞尔维亚拉丁字符时遇到问题,但只有当我从jsf应用程序保存它时才会出现问题。当我使用SQLyog直接在数据库中插入一些行时,一切都很好。当我尝试从应用程序而不是字符插入内容时:č,数据库中的ćđ都插入了问号。

另一方面,当我从数据库中读取该行时,所有内容都正确显示,没有问号。

1 个答案:

答案 0 :(得分:6)

  

当我尝试从应用程序而不是字符插入内容时:数据库中的č,ć和đ插入了问号。

换句话说,MySQL JDBC驱动程序不支持最初提交字符的字符编码。在将字符数据发送到DB时,MySQL JDBC驱动程序默认为平台默认编码,例如ISO 8859-1。您需要通过在JDBC URL中指定useUnicodecharacterEncoding参数来告诉它不要这样做。

jdbc:mysql://localhost:3306/db_name?useUnicode=yes&characterEncoding=UTF-8

当您使用Facelets作为视图技术时,JSF在呈现HTML内容和处理提交的参数值时已经默认为UTF-8。所以问题至少不在那里。

另见: