我的Mac键盘将x-mac-roman字符集发送给Tomcat。有没有一种方法可以迫使我的浏览器或tomcat以某种方式了解我在Mac上键入的内容?
请改用UTF-8。每个自重的客户端 和 服务器端操作系统平台都可以理解。如今,它也被视为标准字符编码。Tomcat仍默认使用旧的ISO 8859-1字符集来解码GET请求参数,而服务器平台的默认编码则是解码POST请求参数。
要设置GET请求编码,请在Tomcat的中编辑所需的HTTP连接器/conf/server.xml:
/conf/server.xml
<Connector ... URIEncoding="UTF-8">
要设置POST请求编码,请创建一个servlet过滤器,该过滤器基本上在doFilter()方法中执行以下操作,并将其映射到与所有POST请求匹配的URL模式上,例如*.jsp或/*:
doFilter()
*.jsp
/*
request.setCharacterEncoding("UTF-8"); chain.doFilter(request, response);
要告诉JSP在生成响应时使用指定的编码(您仍然需要确保使用完全相同的编码来保存JSP文件),这将隐式告诉客户端使用UTF-8来解释响应并编码响应。后续请求,请在每个JSP的顶部设置以下内容:
<%@page pageEncoding="UTF-8"%>
或在webapp的中设置以下配置条目web.xml,以便将其应用于每个单个JSP:
web.xml
<jsp-config> <jsp-property-group> <url-pattern>*.jsp</url-pattern> <page-encoding>UTF-8</page-encoding> </jsp-property-group> </jsp-config>
如果您碰巧使用了数据库,也不要忘记在其中设置正确的编码。