1.关于JSP页面中的pageEncoding和contentType两种属性的区别:
pageEncoding是jsp文件本身的编码,contentType的charset是指服务器发送给客户端时的内容编码,JSP要经过两次的“编码”,
第一阶段:jsp编译成.java文件会用pageEncoding,
第二阶段:从源码.java到字节码.class会用utf-8至utf-8,
第三阶段就是由Tomcat出来的网页, 用的是contentType。
2.全部用UTF-8
resp.setHeader("Content-Type", "text/html;charset=UTF-8");
3.tomcat 目录下 conf/server.xml文件
字符编码解决方案 :<Connector port="80" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true"useBodyEncodingForURI="true" />
useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码,不同的页面可以有不同的重新编码的编码。
另外还可以设置URIEncoding="指定编码",但不是很好的方法,如果tomcat有多个项目,每个项目编码不同,则行不通。
URIEncoding和useBodyEncodingForURI区别是,URIEncoding是对所有GET方式的请求的数据进行统一的重新编码,而useBodyEncodingForURI则是根据响应该请求的页面的request.setCharacterEncoding参数对数据进行的重新编码,不同的页面可以有不同的重新编码的编码。