论坛首页 Java企业应用论坛

淘宝网的搜索关键字的编码与解码

浏览 77072 次
该帖已经被评为良好帖
作者 正文
   发表时间:2008-12-04  
http://search1.taobao.com/browse/0/n-g,zhm3z65w4c45nnoez3fnfo564sr3vtguwgtm5kwkwlb3juvkw3khk4tmxx4nbuccmfzwknruwhqmf25quhe5tph3w3qltvvvythmvuv3x3skhowm2sy2ntvkzkzmhngsvk3ni5lsns67rugqijqxgzjwgsy6bqxlwcq4twn47o3oboowwxcm5swsxo7oji52ztkldjwovlflfq5u2kvlnvdvojwl36gq2bbgc43fgy2ldygc5oykdsozxt53nyfz2224jtwk2k535zfdxlgnjmngz2vmvmwdwtjkvnwuovzgzppyzhm3z65w4c45nnoez3fnfo564sr3vtguwgtm5kwkwlb3juvkw3khk4tmxx4nbuccmfzwknruwhqmf25quhinaqtbonstmnfr4dboxmfb----------------40--commend-0-all-0.htm?at_topsearch=1

我搜索这样的url,长度超过500字节也是可以的
0 请登录后投票
   发表时间:2008-12-04  
gembler 写道
sdh5724 写道

几乎是为了seo.


看来,淘宝网为什么要这么做,已经有答案了。

跟SEO没有关系吧。
这样根本就不SEO。
0 请登录后投票
   发表时间:2008-12-04  
sdh5724 写道
gembler 写道
它这样跳法,加上每天这么大的访问量,速度同样这么好,可想背后的庞大架构。。。

 

谁说URL解释就要跳转的, 中间加上一个URL解释层, 就不需要跳转的, 这个在WEBX框架层次解决的。



你是淘宝的吧,小子。
0 请登录后投票
   发表时间:2008-12-04   最后修改:2008-12-04
http://domain/中文.html?q=中文.

1.第一个中文为pathinfo
2.第二个是queryString

这个url在get请求,也就是说直接拷贝到浏览器上敲回车执行的时候动作如下:
浏览器会对这个url中的分ascii字符集进行url encode.
中文ie:pathinfo 会用utf-8字符集进行url encode.queryString 会用gbk
中文firefoxpathinfo 会用gbk字符集进行url encode.queryString 会用gbk:

http://search1.taobao.com/browse/0/n-0-----------------g,m5sw2ytmmvza----------------40--commend-0-all-0.htm?at_topsearch=1 

n-0-----------------g,m5sw2ytmmvza----------------40--commend-0-all-0.htm
这段是pathinfo.也就是单单中文ie,和中文firefox 进行url encode时,采用的字符集都不一致.一种是utf-8,一种是gbk.那么传到后台程序如何decode呢?


怎么做?做法就是程序把pathinfo用一定的方式转换成ascii码,这样浏览器就不自己来做了.做法有很多.下面举两种:

一种,使用urlEncode(stirng,编码格式).因为这个编码格式是自己制定的.所以后台知道如何decode.
一种:base64.甚至是base32.其实道理都是一样的.把pathinfo用程序转换成ascii码.不让浏览器自己瞎转.


大体如上.这块我遇到过.blog中也有一些整理.可以自行查看.

4 请登录后投票
   发表时间:2008-12-04  
楼上对技术上是正解,完全正确。 我刚才回复的时候, 居然没有人理会。  URL的选择编码方式是有血的教训的。
0 请登录后投票
   发表时间:2008-12-04  
为什么google不用呢?
0 请登录后投票
   发表时间:2008-12-05   最后修改:2008-12-05
xiaoyu 写道
为什么google不用呢?

人家不已经说了么
一种是urlencode(url, enc)
一种是自己写程序编码
目的是一个!
GET访问的前提下,保证服务器接到的URL编码是一致的。
至于你想用urlencode也好或者自己编个火星码也好,个人爱好问题!

血的教训指得也就是,URL里别出现不该出现的东西~!
0 请登录后投票
   发表时间:2008-12-05  
crazy.j 写道
xiaoyu 写道
为什么google不用呢?

人家不已经说了么
一种是urlencode(url, enc)
一种是自己写程序编码
目的是一个!
GET访问的前提下,保证服务器接到的URL编码是一致的。
至于你想用urlencode也好或者自己编个火星码也好,个人爱好问题!

血的教训指得也就是,URL里别出现不该出现的东西~!


跟大家说点故事
   如果你的URL放在邮件里, 很多MAIL SERVER会修改的你的URL ,比如修改你的大小写, 修改你的编码, 这个很常见的情形。那么这个时候, 用户会非常的讨厌。 一些特殊的字符可能导致, MAIL SERVER在安全处理上, 把URL硬生生的拆散了。另外, 为了保持和不同的HTTP SERVER兼容, 不让HTTP SERVER按编码规则修改你的URL。 使用ASCII是最好的选择。 做个网站, 要考虑的细节很多, URL是一个非常重要的东西, 虽然不是技术上的难度, 但是需要细节上的实现。 URL生成工具是非常重要的东西, 甚至某种程度上,到了比较BT的程度, 特定的URL形式甚至有时候是营运的需要。

再次声明, 我不是TAOABO的。 我只是知道这些细节而已。
0 请登录后投票
   发表时间:2008-12-05  
终于解了我的千年疑惑!谢谢哦!
0 请登录后投票
   发表时间:2008-12-05   最后修改:2008-12-05
sdh5724 写道
URL的选择编码方式是有血的教训的。

sdh5724 写道
跟大家说点故事
   如果你的URL放在邮件里, 很多MAIL SERVER会修改的你的URL ,比如修改你的大小写, 修改你的编码, 这个很常见的情形。那么这个时候, 用户会非常的讨厌。 一些特殊的字符可能导致, MAIL SERVER在安全处理上, 把URL硬生生的拆散了。另外, 为了保持和不同的HTTP SERVER兼容, 不让HTTP SERVER按编码规则修改你的URL。 使用ASCII是最好的选择。 做个网站, 要考虑的细节很多, URL是一个非常重要的东西, 虽然不是技术上的难度, 但是需要细节上的实现。 URL生成工具是非常重要的东西, 甚至某种程度上,到了比较BT的程度, 特定的URL形式甚至有时候是营运的需要。


这个故事(可以在哄孩子睡觉的时候用的上)告诉大家,要珍惜生命
sdh5724也是用心良苦啊
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics