我是否需要一个字符集过滤器才能将一些页面显示为带有tomcat的UTF8

时间:2015-08-31 08:19:30

标签: java jsp tomcat utf-8

我的网站使用默认的ISO-8859-1编码,每个页面都是一个jsp,并在servlet容器Apache Tomcat 7.0.30中运行。

e.g

http://www.jthink.net/songkong/jp/support.jsp

但是现在我已经将一些页面翻译成了日语,因此需要用支持这种字符集的东西进行编码,我已经使用了UTF-8

只需添加

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

并更改元标记的字符集

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

到此页面,它现在可以在我的Firefox浏览器中正确呈现。

http://www.jthink.net/songkong/jp/support.jsp

但是这个问题How to get UTF-8 working in Java webapps?的答案说我还需要一个CharFilter,我是否也需要它?我不清楚它的作用是什么?我宁愿不添加它,尤其是因为我希望它可以打破我目前的ISO-8859-1页面。我的非日语页面仍然编码为ISO-8859-1,我决定是将它们转换为UTF-8还是保持原样。我也担心它会破坏PayPal购买验证码。

更新

刚刚意识到我的web.xml文件已经包含了一个用于设置UTF-8的CharacterEncoding过滤器的规范。我不记得为什么我有这个或它实际做了什么,或者我是否应该看到它,因为我的大多数页面都是 UTF-8

<filter>
  <filter-name>CharacterEncoding</filter-name>
  <filter-class>org.apache.catalina.filters.SetCharacterEncodingFilter</filter-class>
  <init-param>
    <param-name>encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
</filter>
<mime-mapping>
  <extension>html</extension>
  <mime-type>text/html;charset=UTF-8</mime-type>
</mime-mapping>
</web-app>

1 个答案:

答案 0 :(得分:0)

CharsetFilter用于设置浏览器的字符编码(如果是自动选择)。但是,您不需要这样,因为所有受支持的Tomcat版本(以及所有servlet容器)都默认执行此操作。不需要手动黑客攻击。