首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

百度url传中文参数怎么实现

2012-01-28 
百度url传中文参数如何实现在goole里工具栏的转向:http://www.google.cn/search?sourceidnavclient&hlzh

百度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一致


0xC0 -> 0xDF 表示有两个字节,这个范围内的utf-8字符容易与gbk编码交集
0xE0 -> 0xEF 表示有三个字节
0xF0 -> 0xF7 表示有四个字节
0xF8 -> 0xFB 表示有五个字节
0xFC -> 0xFD 表示有六个字节

“广州”的ANSI编码是0xB9 0xE3 0xD6 0xDD
其首字节0xB9和0xD6刚好在0xC0-0xDF这个范围内,所以google认为这是个utf-8字符串,至于转码后变成问号,是本机未曾安装字符所属的语言包,所以显示为问号
[解决办法]
对于第一条 http://www.google.cn/search?sourceid=navclient&hl=zh-CN&ie=UTF-8&rlz=1T4CULB_zh-CNCN288CN289&q=广州 

经测试. IE=UTF-8 参数应该是标示 客户端 IE 编码版本 也就是代表客户端的系统编码类型.如果传递出错.那么 google 因为要采用客户端编码类型 对于客户端数据进行转码,最终出来的数据就是错误的.
因为. 通过浏览器地址栏传递的内容是采用的系统编码.而我们的(中国)系统编码 为 GBK/GB2312 用 将 "广州" 用 UTF-8 编码 转换到 GBK/GB2312 编码.最终出来的 肯定是乱码.

去除 IE=utf-8 选项. 或者指定 ie=gbk 在 FF/ie 下 显示正确,搜索成功.
[解决办法]
百度应该不会出现这种问题的,中文会在页面中转换编码然后才传到后台的,一种转化编码方法,jquery的encodeURI(“srcStr”)就可以了。

热点排行
Bad Request.