日期:2014-05-20  浏览次数:20755 次

百度url传中文参数如何实现
在goole里
工具栏的转向:
http://www.google.cn/search?sourceid=navclient&hl=zh-CN&ie=UTF-8&rlz=1T4CULB_zh-CNCN288CN289&q=广州
搜索结果:会把中文显示为"????":

找不到和您的查询 "????" 相符的内容或信息。

建议:

请换用另外的查询字词。
不过当点击页面搜索转向:
http://www.google.cn/search?hl=zh-CN&rlz=1T4CULB_zh-CNCN288CN289&newwindow=1&q=广州&aq=f&oq=
这个却没问题

可是在baidu百度里
http://www.baidu.com/s?wd=广州

http://www.baidu.com/s?ie=gb2312&bs=广州&sr=&z=&cl=3&f=8&tn=baidu&wd=广州&ct=0
居然都没有问题,可以返回正确的结果。

网上有人说:
  BAIDU好像是GBK编码  
  GOOGLE是UTF-8
  HttpUtility.UrlEncode("",Encoding.UTF8);
请问这是不是和编码有关,还有就是这个url是什么时候转码的传给后台的?

------解决方案--------------------
是对URL参数进行编码,GOOGLE是国家化得搜索引擎,当然要采用utf-8
百度不总去,不了解

后台的controller会接受请求,对你的url参数进行解码
------解决方案--------------------
网页都是用UTF8的吧……
------解决方案--------------------
HTML code

<html><head><meta http-equiv=Content-Type content="text/html;charset=gb2312">
<title>百度一下,你就知道      </title>

------解决方案--------------------
FIREFOR3.5--
变成http://www.baidu.com/s?wd=%B9%E3%D6%DD
以下同
IE8--
http://www.baidu.com/s?wd=%B9%E3%D6%DD
将IE变成gb2312编码
http://www.baidu.com/s?ie=gb2312&bs=%B9%E3%D6%DD&sr=&z=&cl=3&f=8&tn=baidu&wd=%B9%E3%D6%DD&ct=0
chrodium--
http://www.baidu.com/s?wd=%B9%E3%D6%DD
将chrodium变成gb2312编码
http://www.baidu.com/s?ie=gb2312&bs=%B9%E3%D6%DD&sr=&z=&cl=3&f=8&tn=baidu&wd=%B9%E3%D6%DD&ct=0


------解决方案--------------------
用这个将中文参数转下

URLDecoder.decode(参数)
------解决方案--------------------
百度的关键词用
keyword = URLEncoder.encode(keyword,"GBK");

GG的用
keyword = URLEncoder.encode(keyword,"UTF-8");

然后拼装到url里面就行了
------解决方案--------------------
通过关键字超链接到百度的搜索引擎上
方法:<a href="http://www.baidu.com/s?ie=utf-8&wd=关键字&cl=3">关键字</a>

通过关键字超链接到谷歌的搜索引擎上
http://www.google.cn/search?hl=utf-8&q=关键字

设置编码
------解决方案--------------------
从一开始就让你的项目是 UTF-8 ,就一切皆好办

不要等到 乱码了,, 发现自己的项目是 iso xxx 之类的

强烈建议从开始就使用 utf-8 ,,有了统一的编码你可以很大程度的避免乱码了,, 

当然可能会出现楼主说的问题
估计是 老版本的系统 浏览器, 我在win7下 ie8 chrome 4 根本不需要 进行转换,后台自动就知道了。


对了,如果是 tomcat别忘了配置 uri 编码
<Connector port="80" protocol="HTTP/1.1" 
connectionTimeout="20000" 
redirectPort="8443" URIEncoding="UTF-8"/>
------解决方案--------------------
GB2312
GBK
GB1830
------解决方案--------------------
用这个将中文参数转下 

URLDecoder.decode(参数) 
 
------解决方案--------------------
utf8
------解决方案--------------------
google对gbk的不完全兼容以前曾讨论过,它想对字符实现编码智能识别,即根据utf-8的编码规则进行检测,满足utf-8的编码当作utf-8处理,不满足的当作本地字符集(中国是gbk)处理,但实际上utf-8和gbk有交集的存在,所以当交集时,默认为utf-8,utf-8的编码规则是根据首字节来判断的
首字节范围:
0x01 -> 0x7F 表示只有一个字节,即与ASCII一致