如何让我的Mac键盘让tomcat了解MacRoman(x-mac-roman)字符集?

时间:2012-04-29 01:36:57

标签: java macos tomcat servlets character-encoding

我的Mac键盘将x-mac-roman字符集发送给Tomcat。有没有办法强制我的浏览器或tomcat以某种方式理解我在Mac上输入的内容?

3 个答案:

答案 0 :(得分:3)

您需要确保每个组件在每个阶段都使用相同的字符集。

要强制Tomcat使用特定的字符编码,您需要在连接器上设置URIEncoding。在这种情况下,您可能想要URIEncoding =“x-MacRoman”

您可能还会发现这有用:http://wiki.apache.org/tomcat/FAQ/CharacterEncoding

答案 1 :(得分:2)

请改用UTF-8。每个备受尊重的客户端服务器端操作系统平台都能理解这一点。它现在也被认为是标准字符编码。对于解码GET请求参数,Tomcat仍默认使用旧的ISO 8859-1字符集;对于解码POST请求参数,Tomcat仍默认为服务器平台的默认编码。

要设置GET请求编码,请在Tomcat的/conf/server.xml编辑所需的HTTP连接器:

<Connector ... URIEncoding="UTF-8">

要设置POST请求编码,请创建一个servlet过滤器,该过滤器基本上在doFilter()方法中执行以下操作,并将其映射到匹配所有POST请求的URL模式,例如*.jsp或{{1 }}:

/*

告诉JSP在生成响应时使用指定的编码(您仍然需要确保使用相同的编码保存JSP文件),这将隐式地告诉客户端使用UTF-8来解释响应并编码后续请求,在每个JSP的顶部设置以下内容:

request.setCharacterEncoding("UTF-8");
chain.doFilter(request, response);

或者在webapp的<%@page pageEncoding="UTF-8"%> 中设置以下配置条目,以便它应用于每个JSP:

web.xml

如果您碰巧使用数据库,请不要忘记在那里设置正确的编码。

另见:

答案 2 :(得分:0)

问题与POST请求有关。 Tomcat对他们不好。修复:将此过滤器添加到您的所有请求中:http://wiki.apache.org/cocoon/SetCharacterEncodingFilter

<filter>
<filter-name>SetCharacterEncoding</filter-name>
<filter-class>SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>SetCharacterEncoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>