Tomcat不能正确编码包含unicode字符的字符串文字。问题发生在Linux服务器上,但不在我的开发机器上(Windows)。它仅影响字符串文字(不是从数据库或从文件中读取的字符串!!!)。如何在tomcat上使用UTF-8
- 我已经在Connector标记(server.xml)上设置了
URIEncoding="utf-8"
。 - 我已经使用了setCharacterEncoding()。
- 我查看堆栈跟踪(没有可能设置编码的过滤器)。
- 我已经设置LANG环境变量
- 我cheched HTTP标头和它们是正确的(内容 - 类型= text/plain的;字符集= UTF-8)
- 我检查了编码在浏览器,它是正确(UTF-8)
以上都没有工作。关于我可能错过的任何想法?
public class Test extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("utf-8");
resp.setContentType("text/plain;");
Writer w = resp.getWriter();
w.write("Μαλακία Latin"); //Some unicode characters
w.close();
}
以上显示在浏览器中。 ÎÎÎÎÎÎÎÎκάLatin
确保源java文件具有utf-8编码集。我使用Notepad ++来检查这一点。打开文件并检查“编码”菜单。如果编码不是UTF,则剪切源文件的全部内容,更改编码,粘贴剪贴板中的内容并保存源文件。 – 2012-03-22 12:55:56
如果您在十六进制编辑器中查看服务器响应,返回的实际字节序列是什么?什么是你的源文件的编码? – Mikaveli 2012-03-22 12:56:19
*“问题发生在Linux服务器上,但不在我的开发机器上(Windows)。”*您如何部署到Linux?你是否一个接一个地传输文件?如果是这样,怎么样?通过FTP?如果是这样,你是在二进制模式下传输? – BalusC 2012-03-22 13:00:17