其实我不确定是不是Tomcat的问题。我必须处理一些中文单词(编码为UTF-8)。当我在eclipse上用“Run on server”调试程序时,它会返回达到了预期的结果。但是当我将其导出为war包并在tomcat上运行时,所有中文单词都会以GBK显示,并且无法阅读。我不知道问题出在哪里。谁能告诉我如何解决它?
最佳答案
您需要进行一些更改才能将 UTF-8 设为默认编码字符:
- 在 server.xml 中的连接器上设置 URIEncoding="UTF-8"。
- 使用默认编码设置为 UTF-8 的字符编码过滤器
- 更改所有 JSP 以在其 contentType 中包含字符集名称。
例如,使用
<%@page contentType="text/html; charset=UTF-8" %>
对于通常的 JSP 页面和<jsp:directive.page contentType="text/html; charset=UTF-8" />
用于 XML 语法的页面(又名 JSP 文档)。 - 更改所有 Servlet 以设置响应的内容类型并将内容类型中的字符集名称包含为 UTF-8。
使用
response.setContentType("text/html; charset=UTF-8")
或response.setCharacterEncoding("UTF-8")
. - 将您使用的任何内容生成库(Velocity、Freemarker 等)更改为使用 UTF-8,并在它们生成的响应的内容类型中指定 UTF-8
- 在字符编码过滤器或 jsp 页面有机会将编码设置为 UTF-8 之前,禁用任何可能读取请求参数的阀门或过滤器。
有关更多信息,请参阅 this
关于java - 如何设置Tomcat的编码类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37660099/