web传参中文问题

服务器的默认编码为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”//这一条是默认的
                />

 

2useBodyEncodingForURI 是用来控制Get 方式提交时 编码方式能否

setCharacterEncoding(“”)来改变。

           Tomcat 4.0 默认useBodyEncodingForURI=”true”,所以get post 一样。

           Tomcat5.0+区分。

           方法:useBodyEncodingForURI="true”+过滤器

3new String (str.getBytes("ISO-8859-1"),"GBK")

       Get post 都可用

 

4javascript中传值时用 encodeURI(encodeURI(url))url 为路径和参数

接收页面用还原语句:

String  path=java.net.URLDecoder.decode(request.getPrarmeter( "参数名"), "UTF-8 ");

 

5Ajax 中 类似(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;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值