服务器的默认编码为ISO-8859-1
1 pageEncoding="UTF-8"
2 contentType="text/vnd.wap.wml;charset=utf-8"
3 request.setCharacterEncoding("UTF-8")
4 response.setCharacterEncoding("UTF-8")
过滤器适用于Post提交方式。
GET 提交 :
(1)Tomcat 6.0/conf/server.xml中
Connector port="8888" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="GBK" // 这一条是要加上的
useBodyEncodingForURI="false”//这一条是默认的
/>
(2)useBodyEncodingForURI 是用来控制Get 方式提交时 编码方式能否
setCharacterEncoding(“”)来改变。
Tomcat 4.0 默认useBodyEncodingForURI=”true”,所以get post 一样。
Tomcat5.0+区分。
方法:useBodyEncodingForURI="true”+过滤器
(3)new String (str.getBytes("ISO-8859-1"),"GBK")
Get post 都可用
(4)javascript中传值时用 encodeURI(encodeURI(url));url 为路径和参数
接收页面用还原语句:
String path=java.net.URLDecoder.decode(request.getPrarmeter( "参数名"), "UTF-8 ");
(5)Ajax 中 类似(4)
xmlHttp.open( "POST ",encodeURI(encodeURI(url)),true);
String path=java.net.URLDecoder.decode(request.getPrarmeter( "参数名"), "UTF-8 ");
(6)
/**
* 换掉JS GET 传值的中+号问题
* @param str
* @return
*/
function changePlusChar(str){
var reg = new RegExp("//+","gi");
return str.replace(reg,"%2B");
}
/**
* 用于解决JS get 方式传参时的中文乱码问题<br>
* 在接收的action中,利用java.net.URLDecoder.decode(String s, String enc)解码
* @param s
* @return
*/
function bPayEncodeURI(s){
if(s == null )
return s;
if(s.length == 0)
return s;
//处理加号+原理:在服务器自动解去第一层时,加号+被还原,在URLDecoder.decode中,对+号不做处理
var code = encodeURI(changePlusChar(encodeURI((s))));
return code;
}