Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/389.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java JDBC字符编码_Java_Mysql_Jdbc_Character Encoding - Fatal编程技术网

Java JDBC字符编码

Java JDBC字符编码,java,mysql,jdbc,character-encoding,Java,Mysql,Jdbc,Character Encoding,我有一个Java Web应用程序在GlassFish3上运行,在MySQL上运行JPA(EclipseLink)。我面临的问题是,如果使用update()方法将实体保存到数据库中,String字段将失去完整性“?”,而不是某些字符 服务器、页面和数据库配置为使用UTF-8 发布表单数据后,下一页将正确显示数据。此外,在NetBeans调试中,“似乎”当前实体的String属性也存储了正确的值。我不知道NetBeans调试是否可信;可能是它解码正确,但它不正确。我用以下方法解决了它:我使用Glas

我有一个Java Web应用程序在GlassFish3上运行,在MySQL上运行JPA(EclipseLink)。我面临的问题是,如果使用
update()
方法将实体保存到数据库中,
String
字段将失去完整性<将显示代码>“?”,而不是某些字符

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


发布表单数据后,下一页将正确显示数据。此外,在NetBeans调试中,“似乎”当前实体的
String
属性也存储了正确的值。我不知道NetBeans调试是否可信;可能是它解码正确,但它不正确。

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

characterEncoding=UTF-8


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

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

我还必须添加useUnicode=true,所以我必须用“&”来表示参数,所以看起来像这样:

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

如果您像我一样使用maven配置文件来设置MySQL URL,请确保将
&;amp而不是
&因为maven在将persistence.xml文件写入classes文件夹时会取消显示url。

新版本JDBC驱动程序会自动检测字符编码。
不需要显式设置。

什么是数据库,使用什么连接字符串?我使用的是MySQL,连接字符串是:
jdbc:mysql://localhost:3306/administer
为希望使用utf8mb4的用户提供的链接:对于遇到相同问题的用户,请附带说明:如果要在在您的
persistence.xml
中,您必须将
&
重写为
&。示例:
jdbc:mysql://localhost:3306/administer?rewriteBatchedStatements=true&characterEncoding=UTF-8
对于较新版本的jdbc驱动程序(>=5.1.13),请不要指定“characterEncoding”。看看: