首页 > 解决方案 > 从 SQL Server 读取 nvarchar 时带菱形的问号

问题描述

我在这里遇到了一个非常奇怪的问题。

我需要从 SQL Server(2016 版)读取数据。之类的名字O'Neal

当我在 IDE/TextEditor 中加载字符串时,O'Neal可以正确读取为O'Neal.

但是当我将我的程序打包为 jar 或 war 文件时,O'Neal是这样加载的O��Neal

我不知道这是怎么发生的。任何建议将不胜感激。谢谢。

标签: javatomcatjdbc

解决方案


参考这个问题

就像@Arvind 所说,它在 IDE/Editor 中运行正确,因为它已经被编码为 UTF-8。

但是,jar 或 tomcat 不是,因此我们必须确保它以 UTF-8 编码运行。

  1. 在 Windows 10 CMD 中,jar 文件可以这样运行:

> java -Dfile.encoding="UTF-8" -jar test.jar

但是此命令无法在 PowerShell 中运行,我不知道为什么这是另一个问题。

  1. 如果你想在 tomcat 服务器上运行 war 文件,在 中,用编辑器{pathToTomcat}/bin打开。catalina.bat

添加set "JAVA_OPTS=%JAVA_OPTS% -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"


推荐阅读