web传参中文问题

来源:互联网 发布:数据交易平台有哪些 编辑:程序博客网 时间:2024/06/06 01:34

服务器的默认编码为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")

       Getpost 都可用

 

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;

}

原创粉丝点击