2

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

这是我迄今为止尝试过的:

  1. 我已经确认 MySQL 数据库表中的数据实际上是正确编码的。当我在 MySQL Workbench 中查看数据时,它显示正确。
  2. 我尝试用 Java 编写一个小型 MySQL 客户端,它只是连接到数据库并打印出该行。起初,我收到了类似的输出(所有?)。然后,我尝试使用 JVM 参数运行客户端,-Dfile.encoding=UTF-8它成功了。
  3. 我在 Tomcat 中运行 Web 服务。我尝试-Dfile.encoding=UTF-8在 catalina.bat 中添加 JAVA_OPTS,但没有任何变化。
  4. 我在我的 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) javax.servlet.http.HttpServlet.service(HttpServlet.java:621) javax.servlet.http.HttpServlet.service(HttpServlet .java:728)

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

4

0 回答 0