URL中文乱码及特殊字符处理

3/3/2017来源:C/C++教程人气:2787

一、中文乱码

IE高版本(应该是9以上,不确定),在get方式请求中中文传到后台容易出现乱码问题。解决方法如下:

1、第一种,换成post方式

如果可以得话换成post方式就可以。如果采用表单或者Ajax,都可以把数据放到表单域或者ajax的data中,采用post请求。

2、第二种,使用encodeURI()

如果必须使用get方式将参数直接拼接在url中,可以是encodeURI()方法对中文参数进行编码。重要:需要使用两次encodeURI()方法。

如:action="www.baidu.com?name=encodeURI(encodeURI('小明‘))"

而后台拿到数据后同样需要解码,java代码:

     String name=request.getParameter("name");			
     name= URLDecoder.decode(name, "UTF-8");
这样就可以正常使用了,当然还是第一种简单省事。

二、特殊字符

现在分布式项目很多,不同子项目之间经常需要来回传递url,有时候url中还有+,空格,/,?,%,#,&,=这些特殊字符,传递过程中容易丢失。解决的办法就是使用编码代替

+    URL 中+号表示空格                                 %2B    空格 URL中的空格可以用+号或者编码           %20  /   分隔目录和子目录                                    %2F      ?    分隔实际的URL和参数                             %3F      %    指定特殊字符                                          %25      #    表示书签                                                 %23      &    URL 中指定的参数间的分隔符                  %26      =    URL 中指定参数的值                                %3D