在Windows中更改Tomcat的Charset.defaultCharset

19

我正在Windows 7上使用Tomcat 6.0.32。 在一个非常简单的servlet中,我在init方法中打印:

System.out.println(Charset.defaultCharset());

输出为:

windows-1253
据我所理解,这是Tomcat在JVM中启动的方式,因为我在一个独立的Java类中打印相同的内容,得到的响应是"UTF8"。那么,我该如何将其更改为UTF-8呢?
谢谢。

你尝试过 request.getCharacterEncoding(); 吗?看看它打印出来了什么。无论如何,你都可以更改字符编码,但这取决于要求。请查看此维基页面http://wiki.apache.org/tomcat/FAQ/CharacterEncoding#Q1 - RP-
由于我正在init方法中工作,所以无法访问请求。无论如何,这不是一个请求-响应问题,因为我需要使用UTF8编码来读取文件而不是将响应发送到UTF8编码。 - nonouco
4个回答

40

在TOMCAT/bin目录下创建一个名为setenv.bat的文件,其内容如下:

set "JAVA_OPTS=%JAVA_OPTS% -Dfile.encoding=UTF8"

正确的配置是 -Dfile.encoding=UTF-8 还是 -Dfile.encoding=UTF8?我认为应该是 UTF-8。 - Marco Altieri
正确的做法如答案所述,即UTF8 - 请查看以下两个链接:1) https://dev59.com/Wm025IYBdhLWcg3wZlHd 2)http://docs.oracle.com/javase/6/docs/technotes/guides/intl/encoding.doc.html - nonouco

16

这个设置对我有效。我还有一个问题,这个设置只需要在Windows操作系统中定义还是我们也需要在Linux中定义? - Yogesh Bombe

6
对于作为Windows服务运行的Tomcat,对于我来说,既不%JAVA_OPTS%,也不setenv.bat答案都无效。
我在注册表中设置了选项“-Dfile.encoding=UTF8”:
“HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\tomcatstackTomcat\Parameters\Java --> Options*”
然后它就可以工作了。

3
尝试将(Windows)环境变量JAVA_TOOL_OPTIONS设置为-Dfile.encoding=UTF-8,然后启动Tomcat Server。可通过此链接获取更多信息:设置默认的Java字符编码

不幸的是,这不起作用。设置-Dfile.encoding=UTF-8是正确的方法,但我不认为tomcat正在将JAVA_TOOL_OPTIONS附加到JAVA_OPTS。无论如何,我已经找到了解决办法。请查看以下内容。 - nonouco

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接