JDBC字符编码

Dan*_*lay 22 java mysql jdbc character-encoding

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

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

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

Boz*_*zho 50

它是JDBC,而不是决定编码的JPA:

jdbc:mysql://localhost:3306/administer?characterEncoding=utf8
Run Code Online (Sandbox Code Playgroud)

  • 对于遇到相同问题的人来说,只是一个旁注:如果你想在你的 `persistence.xml` 中链接 JDBC url 中的参数,你必须将 `&` 重写为 `&`。示例:`jdbc:mysql://localhost:3306/administer?rewriteBatchedStatements=true&characterEncoding=UTF-8` (4认同)

Dan*_*lay 12

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

characterEncoding = UTF-8


fjj*_*ing 5

新版本 JDBC 驱动程序自动检测字符编码。您不需要明确设置它。