java - 如何在tomcat中使用UTF-8

标签 java tomcat unicode utf-8

Tomcat 未正确编码包含 unicode 字符的字符串文字。问题出现在 Linux 服务器上,但不出现在我的开发机器 (Windows) 上。它仅影响字符串文字(不影响从数据库或文件中读取的字符串!!!)。

  • 我已经在连接器标签 (server.xml) 中设置了 URIEncoding="utf-8"
  • 我使用了 setCharacterEncoding()。
  • 我检查了堆栈跟踪(没有可能设置编码的过滤器)。
  • 我已经设置了 LANG 环境变量
  • 我检查了 HTTP header ,它们是正确的 (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();
}

上面在浏览器中显示了这一点。 γγγ»γδεγε拉丁语

最佳答案

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

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

-encoding encoding Set the source file encoding name, such as EUC-JP and UTF-8. If -encoding is not specified, the platform default converter is used.

关于java - 如何在tomcat中使用UTF-8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9822663/

相关文章:

java - Spring 依赖注入(inject)无法正常工作

java - 使用 JPA 语法时,具有复杂键类的 JpaRepository 验证失败,错误为 "Validation failed for query for method"

IE 11 中 unicode 的 Javascript URL 错误

c# - X.ToCharArray().Length 等于 GetBytes(X).Length

java - 如何在 JSTL 中格式化输出

java - 如何在java中将一个项目的常量值引用到另一个项目

tomcat - 在删除 conf/Catalina/localhost 目录之前,Tomcat6 中所有应用程序中的 404

apache - 多节点环境——单个节点应用服务器健康检查

Apache 服务器 : no listening sockets available

postgresql - 我应该使用什么类型在 PostgreSQL 中存储表情符号?