JDBC字符编码

时间:2010-06-14 20:19:39

标签: java mysql jdbc character-encoding

我在MySQL上运行GlassFish 3和JPA(EclipseLink)上的Java Web应用程序。我面临的问题是,如果我使用update()方法将实体保存到数据库,String字段将失去完整性;显示'?'而不是某些字符。

服务器,页面和数据库配置为使用UTF-8

发布表单数据后,下一页正确显示数据。此外,在NetBeans调试中“看起来”似乎当前实体的String属性也存储了正确的值。 Dunno,如果可以信任NetBeans调试;可能是它正确解码,但它不正确。

4 个答案:

答案 0 :(得分:49)

确定编码的是JDBC,而不是JPA:

jdbc:mysql://localhost:3306/administer?characterEncoding=utf8

答案 1 :(得分:12)

我解决了以下问题:我使用GlassFish管理界面将此属性添加到我的连接池的设置中:

  

characterEncoding = UTF-8

答案 2 :(得分:3)

新版JDBC驱动程序自动检测characterEncoding。 您无需明确设置它。

答案 3 :(得分:0)

我还必须添加useUnicode = true,所以我不得不用'&'来连接参数所以它看起来像这样:

jdbc:mysql://127.0.0.1:3306/warranteer?useUnicode=true&characterEncoding=UTF-8

如果您正在使用maven配置文件来设置MySQL URL,请确保将&改为&,因为maven在将persistence.xml文件写入classes文件夹时会取消该URL。