url 乱码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了url 乱码相关的知识,希望对你有一定的参考价值。

在微软的bing搜索的时候,直接在地址栏输入搜索的汉字搜索结果都是乱码,能帮忙解决一下吗?

参考技术A 编码问题.
一般有中文参数的时候编码应该是GBK或GB2312.
通常默认UTF-8.
还有传中文参数的时候请用:
Server.UrlEncode(url);加密
在接受中文参数的时候请用
Server.UrlDecode(url);解密
去你的网站里.在传参时和接参时分别用我上面提供的方法进行处理.
去web.config中修改成
<globalization
requestEncoding="GB2312"
responseEncoding="GB2312"
/>
参考技术B 在bing首页 右侧有个首选项 进去看看选择 Bing 的显示语言和版式。

简体中文 显示此网站

或者看看你的浏览器编码设置 一般在查看--编码 下面
选简体中文或者自动选择

http://cn.bing.com/settings.aspx?ru=http%3a%2f%2fcn.bing.com%3a80%2fsearch%3fq%3d%25E5%25BE%25AE%25E8%25BD%25AF%26go%3d%26form%3dQBLH%26filt%3dall&FORM=SEFD

地址栏url中文乱码问题

参照博文:http://blog.csdn.net/howlaa/article/details/12834595

做视频的时候,视频的Url和videoName( 含中文)放在的href中,然后转向播放页面,地址栏中的url存在中文编码问题.

问题:使用了encodeURI对Url进行了一次编码,依然是中文乱码。

解决方法:

1.在js中使用encodeURI对url进行双重编码。(一定要双重的,之前用一重的似乎并没有用)

 var url="<%=basePath%>videoJsp/videoSearch.jsp?key="+search_key;
			 	 url=encodeURI(encodeURI(url));
			 	 window.location.href=url;

  解码的话同样需要解码两次:

video_name=encodeURI(encodeURI(video_name));

 2.在使用java代码应该也是可以的.

  同样使用的是java库中的

 

借鉴前面的博文,分析原因:

 encodeURI函数主要是对Url老进行转码,他默认采用UTF-8的编码.

 encodeURI编码的格式是:一个汉字有三个字节组成,每个字节会转成16进制的编码,同时会加上%.

  假设页面端输入的中文是一个“中”,按照下面步骤进行解码:

  • 1.第一次encodeURI,按照utf-8方式获取字节数组变成[-28,-72-83],对字节码数组进行遍历,把每个字节转化成对应的16进制数,这样就变成了[E4,B8,AD],最后变成[%E4,%B8,%AD]  此时已经没有了多字节字符,全部是单字节字符。
  • 2、第二次encodeURI,进行编码,会把%看成一个转义字符,并不编码%以后字符,会把%编码成%25.把数组最后变成[%25E4,%25B8,%25AD]然后就把处理后的数据[%25E4,%25B8,%25AD]发往服务器端,当应用服务器调用getParameter方法,getParameter方法会去向应用服务器请求参数,应用服务器最初获得的就是发送来的[%25E4,%25B8,%25AD],应用服务器会对这个数据进行URLdecode操作,应用服务器进行解码的这一次,不管是按照UTF-8,还是GBK,还是ISO-8859,,都能得到[%E4,%B8,%AD],因为都会把%25解析成%.并把这个值返回给getParameter方法.
  • 3\、再用UTF-8解码一次,就得到"中"了,想想看,如果不编码两次,当服务器自动解码的时候,假如是按照ISO-8859去解码UTF-8编码的东西,就是会出现乱码。 

 

以上是关于url 乱码的主要内容,如果未能解决你的问题,请参考以下文章

url编码中文乱码问题怎么解决

url传参数出现中文乱码,怎么解决?

js 传值url 乱码问题

url传参数出现中文乱码,怎么解决?

URL参数乱码问题

为啥jsp使用URL传中文参数会乱码