如何在tomcat中使用UTF-8

idr*_*sid 7 java unicode tomcat utf-8

Tomcat无法正确编码包含unicode字符的字符串文字.问题发生在Linux服务器上,但不在我的开发机器上(Windows).它仅影响字符串文字(不是从DB或文件中读取的字符串!!!).

  • 我已经设置了URIEncoding="utf-8"Connector标签(server.xml).
  • 我使用了setCharacterEncoding().
  • 我抓住了堆栈跟踪(没有可能设置编码的过滤器).
  • 我已经设置了LANG环境变量
  • 我打了HTTP Headers他们是正确的(Content-Type = text/plain; charset = 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();
}
Run Code Online (Sandbox Code Playgroud)

以上内容在浏览器中显示.ÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎÎ

ben*_*phy 4

您可以在编译时传入 -encoding 'utf-8' 或 -encoding 'iso-8859-1' 来强制 javac 读取文件时对文件进行编码。只需确保它与您的 .java 文件实际编码的任何编码相匹配即可。

http://docs.oracle.com/javase/6/docs/technotes/tools/windows/javac.html

-encoding 编码 设置源文件编码名称,例如 EUC-JP 和 UTF-8。如果未指定 -encoding,则使用平台默认转换器。