DataNucleus JDO应用程序的UTF-8字符编码问题(公开MySQL数据库)

DataNucleus JDO应用程序的UTF-8字符编码问题(公开MySQL数据库),mysql,jdbc,jdo,datanucleus,Mysql,Jdbc,Jdo,Datanucleus,我有一个DataNucleus JDO web应用程序,它将MySQL数据库表作为web服务公开。其中一个表行包含俄语文本。当web服务返回该行时,该文本显示为 以下是我到目前为止所做的尝试: 我已经确认MySQL数据库表中的数据实际上是正确编码的。在MySQL Workbench中查看数据时,数据显示正确 我尝试用Java编写一个小型MySQL客户端,它只需连接到数据库并打印出行。起初,我收到了类似的输出(所有?)。然后,我尝试使用JVM参数运行客户机,-Dfile.encoding=UTF-

我有一个DataNucleus JDO web应用程序,它将MySQL数据库表作为web服务公开。其中一个表行包含俄语文本。当web服务返回该行时,该文本显示为

以下是我到目前为止所做的尝试:

  • 我已经确认MySQL数据库表中的数据实际上是正确编码的。在MySQL Workbench中查看数据时,数据显示正确
  • 我尝试用Java编写一个小型MySQL客户端,它只需连接到数据库并打印出行。起初,我收到了类似的输出(所有?)。然后,我尝试使用JVM参数运行客户机,
    -Dfile.encoding=UTF-8
    ,它成功了
  • 我正在Tomcat中运行web服务。我尝试将
    -Dfile.encoding=UTF-8
    添加到catalina.bat中的JAVA_OPTS中,但没有任何变化
  • 我在pom.xml文件中将我的JDBC连接URL指定为属性,它在jdoconfig.xml中被引用。我尝试附加
    ?useEncoding=true&;characterEncoding=UTF-8
    连接到连接url,当我尝试访问web服务时,我一直收到以下NullPointerException错误:

    java.lang.NullPointerException org.datanucleus.api.rest.RestServlet.doGet(RestServlet.java:271) javaservlet.http.HttpServlet.service(HttpServlet.java:621) javaservlet.http.HttpServlet.service(HttpServlet.java:728)


  • 我现在没有主意了。我一直很小心地确保在支持UTF-8编码的介质中查看任何输出。我对DataNucleus和JDO API没有太多的经验,所以我想知道我是否遗漏了一些与之相关的内容。

    对于选项4,这就是您所拥有的日志,您指的是哪个日志?您使用的是DataNucleus,所以让我们尝试一下;-)我已经隔离了ApacheJDO的问题,而不是DataNucleus的问题。当我在DataNucleus项目中使用Jersey构建RESTful web服务时,编码被正确处理。不,我停止使用JDO并创建了自己的web服务来解决这个问题。