标签:
用SSH开发应用其中一个比较麻烦的事就是中文支持,包括jsp页面显示,get/post请求处理,java代码的字符串,后端数据库连接都需要考虑。为了简化这个过程,我们尽量在各个地方使用单一编码,推荐UTF-8。
下面以UTF-8为例罗列一下需要考虑的配置。
1. 一般我们的应用都跑在Tomcat上,Tomcat的配置文件server.xml需要为Connector添加URIEncoding配置,这样它解码中文才不会出现乱码。
<Connector connectionTimeout="20000" port="8080" protocol="HTTP/1.1" redirectPort="8443" URIEncoding="UTF-8"/>
2. jsp文件头部需要需要添加contentType和pageEncoding,html的meta中添加content-type。
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
3. 项目的web.xml中添加编解码filter,添加到其他filter前面。
<filter> <filter-name>CharacterEncodingFilter</filter-name> <filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class> <init-param> <param-name>encoding</param-name> <param-value>UTF-8</param-value> </init-param> <init-param> <param-name>forceEncoding</param-name> <param-value>false</param-value> </init-param> </filter> <filter-mapping> <filter-name>CharacterEncodingFilter</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
4. 在jdbc的连接url中加上charsetEncoding参数,这样连接后端数据库就会使用UTF-8编码
jdbc.url=jdbc:mysql://1.1.1.1:3306/foo?useUnicode=true&characterEncoding=UTF-8
5. 后端数据库也配置成UTF-8的,比如Mysql需要在my.cnf中client和mysqld域中添加字段。
[client] default-character-set=utf8 [mysqld] character-set-server=utf8
6. 最后就是你的源码编辑器也设置成UTF-8,包括外部的资源文件,如果有个别需要转码的就在需要的时候转一下,比如8859转utf-8。
utfstring = new String(pstring.getBytes("iso-8859-1"), "UTF-8");
上面几点基本就包括了解决乱码的要点,依照坐下来一般就没啥问题了,剩下编码中只需要记住java内部用的UTF-16双字节编码,UTF-16就是交通枢纽。
标签:
原文地址:http://www.cnblogs.com/marsbible/p/4568770.html