java - 从 SQL Server 读取 nvarchar 时带菱形的问号
问题描述
我在这里遇到了一个非常奇怪的问题。
我需要从 SQL Server(2016 版)读取数据。之类的名字O'Neal
。
当我在 IDE/TextEditor 中加载字符串时,O'Neal
可以正确读取为O'Neal
.
但是当我将我的程序打包为 jar 或 war 文件时,O'Neal
是这样加载的O��Neal
。
我不知道这是怎么发生的。任何建议将不胜感激。谢谢。
解决方案
参考这个问题
就像@Arvind 所说,它在 IDE/Editor 中运行正确,因为它已经被编码为 UTF-8。
但是,jar 或 tomcat 不是,因此我们必须确保它以 UTF-8 编码运行。
- 在 Windows 10 CMD 中,jar 文件可以这样运行:
> java -Dfile.encoding="UTF-8" -jar test.jar
但是此命令无法在 PowerShell 中运行,我不知道为什么这是另一个问题。
- 如果你想在 tomcat 服务器上运行 war 文件,在 中,用编辑器
{pathToTomcat}/bin
打开。catalina.bat
添加set "JAVA_OPTS=%JAVA_OPTS% -Djavax.servlet.request.encoding=UTF-8 -Dfile.encoding=UTF-8"