我有一个Java Web应用程序在GlassFish 3上运行,JPA (EclipseLink)在MySQL上运行。我面临的问题是,如果我使用update()
方法将实体保存到数据库中,String
字段将失去完整性;显示的是'?'
而不是某些字符。
服务器、页面和数据库配置为使用UTF-8
。
在我发布表单数据之后,下一个页面正确地显示了数据。此外,在NetBeans调试中,“似乎”当前实体的String
属性也存储了正确的值。我不知道NetBeans调试是否可信;可能是它可以正确解码,但它是不正确的。
发布于 2010-06-15 13:07:14
决定编码的是JDBC,而不是JPA:
jdbc:mysql://localhost:3306/administer?characterEncoding=utf8
发布于 2016-03-18 17:11:54
新版本的JDBC驱动程序会自动检测characterEncoding。您不需要显式设置它。
发布于 2015-12-29 23:40:06
我还必须添加useUnicode=true,所以我必须用'&‘连接参数,所以它看起来像这样:
jdbc:mysql://127.0.0.1:3306/warranteer?useUnicode=true&characterEncoding=UTF-8
如果您像我一样使用maven配置文件来设置类的URL,请确保使用&
而不是&
,因为maven在将persistence.xml文件写入MySQL文件夹时不会对url进行转义。
https://stackoverflow.com/questions/3040597
复制相似问题