我的Tomcat Web服务器正在使用Struts框架(v1)。
当读取请求参数时,我需要将参数从ISO-8859-1重新编码为UTF-8以获得正确的值。 e.g。
String fName = request.getParameter("fName");
String displayName = new String(fName.getBytes("ISO-859-1"), "UTF-8");
persistName(displayName);
问题是为什么默认编码是ISO-8859-1? 它在哪里定义以及如何改变它?
Env详情:
答案 0 :(得分:2)
我认为,如果我没记错的话,可以将连接器上的URIEncoding属性设置为默认为UTF-8。
根据this link,Tomcat 8下的默认值(当严格的servlet遵从性关闭时)是UTF-8。在Tomcat 7下,我公司明确地设置了这个。
在连接器元素的server.xml中:
<Connector port="80" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="443" URIEncoding="UTF-8"/>
根据Tomcat 7 HTTP connector的配置文档,默认为ISO-8859-1。
Tomcat 8 HTTP connector的配置文档明确说明了如果org.apache.catalina。 STRICT_SERVLET_COMPLIANCE为false,将使用UTF-8。
我确实有一些暗示,这可以追溯到Servlet 2.4规范,该规范声明如果没有指定字符编码,则使用ISO-8859-1。
答案 1 :(得分:0)
检查文件的编码是否为utf-8,html中的charset元标记也设置为utf-8。