我正在使用以下代码发送回复:
response.setHeader("Content-Encoding","UTF-8");
response.setContentType("text/plain charset=UTF-8");
PrintWriter outWriter = response.getWriter();
String returnString = new String(dataController.translateFile(documentBuffer).getBytes(), "UTF-8");
outWriter.print(returnString);
当我在Eclipse上使用tomcat 6.0.29运行我的Web应用程序时,生成的txt文件为我提供了一个带有utf-8编码的txt文件(我可以看到很多阿拉伯语或中文符号没有问题),但是一旦部署在项目的WAR文件中,生成的txt文件中填充了问号而不是中文或阿拉伯字符。
知道可能出现什么问题?
我还在CONF / Tomcat的server.xml文件中的每个Connector标记上添加了URIEncoding="UTF-8"
。 Eclipse正在使用相同的tomcat,但无济于事。
提前致谢!
答案 0 :(得分:4)
response.setHeader("Content-Encoding","UTF-8");
设置内容类型时,这是多余的。
response.setContentType("text/plain charset=UTF-8");
这实际上是错误的。在charset
之前缺少分号。
我还在CONF / Tomcat的server.xml文件中的每个Connector标签上添加了URIEncoding =“UTF-8”。
这仅对GET请求参数有效。
您需要的是以下内容:
response.setCharacterEncoding("UTF-8"); // Otherwise platform default encoding will be used to write the characters.
response.setContentType("text/plain; charset=UTF-8");
在调用response.getWriter()
或getOutputStream()
之前调用此。
答案 1 :(得分:1)
我找到了答案,即使我有一些错误和一些不必要的代码,其中BalusC指出,解决方案是在Windows上创建一个环境变量(或者我认为在apache级别),然后重启服务器。
此变量为: JAVA_OPTS ,其值为: -Dfile.encoding = UTF-8
答案 2 :(得分:1)
你提到的伊卡林:
此变量为:JAVA_OPTS,其值为:-Dfile.encoding = UTF-8
这是在/conf/server.xml内吗?
美好的一天!