代码之家  ›  专栏  ›  技术社区  ›  Daniel Szalay

JDBC字符编码

  •  22
  • Daniel Szalay  · 技术社区  · 14 年前

    我有一个在MySQL上运行在GalasFISH 3和JPA(Eclipse)上的Java Web应用程序。我面临的问题是,如果使用 update() 方法, String 字段失去完整性; '?' 显示而不是某些字符。

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

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

    4 回复  |  直到 8 年前
        1
  •  49
  •   Bozho    14 年前

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

    jdbc:mysql://localhost:3306/administer?characterEncoding=utf8
    
        2
  •  12
  •   Daniel Szalay    10 年前

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

    字符编码=UTF-8

        3
  •  3
  •   fjjiaboming    8 年前

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

        4
  •  0
  •   bentzy    9 年前

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

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

    如果你和我一样使用maven配置文件来设置mysql的url,请确保 & 相反 & 因为Maven在将persistence.xml文件写入classes文件夹时取消了对URL的搜索。