如何设置Tomcat的编码类型?

时间:2016-06-06 14:31:01

标签: java eclipse tomcat7

实际上我不确定这是由Tomcat引起的问题。我不得不处理一些中文单词(用UTF-8编码)。当我用“Run on server”在eclipse上调试程序时,它会返回但是当我将它导出到war包并在tomcat上运行时,所有的中文单词都会显示在GBK中,无法读取。我不知道问题出在哪里。有谁能告诉我如何解决它?

2 个答案:

答案 0 :(得分:1)

您需要进行多项更改才能将UTF-8作为默认编码字符:

  • 设置URIEncoding =" UTF-8"在您的Connector in server.xml。
  • 使用字符编码过滤器,默认编码设置为UTF-8
  • 更改所有JSP以在其contentType中包含charset名称。 例如,对于通常的JSP页面使用<%@page contentType="text/html; charset=UTF-8" %>,对于XML语法(也称为JSP文档)使用<jsp:directive.page contentType="text/html; charset=UTF-8" />
  • 更改所有servlet以设置响应的内容类型,并在内容类型中包含charset name为UTF-8。 使用response.setContentType("text/html; charset=UTF-8")response.setCharacterEncoding("UTF-8")
  • 更改您使用的任何内容生成库(Velocity,Freemarker等)以使用UTF-8并在其生成的响应的内容类型中指定UTF-8
  • 在字符编码过滤器或jsp页面有机会将编码设置为UTF-8之前,禁用任何可能读取请求参数的阀门或过滤器。

有关详细信息,请参阅this

答案 1 :(得分:0)

除了elkorchi的回答之外,您还需要在web.xml中添加过滤器

<filter>
    <filter-name>charsetFilter</filter-name>
    <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
    <init-param>
        <param-name>encoding</param-name>
        <param-value>UTF-8</param-value>
    </init-param>
</filter>
<filter-mapping>
    <filter-name>charsetFilter</filter-name>
    <url-pattern>/*</url-pattern>
</filter-mapping>

如果使用spring框架,则上面有效,否则你需要像这样编写自己的过滤器并相应地更改xml配置中的类,

请参阅博客了解详情:enter link description here