<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>I@laoer.com &#187; HTTP</title>
	<atom:link href="http://i.laoer.com/tag/http/feed" rel="self" type="application/rss+xml" />
	<link>http://i.laoer.com</link>
	<description>技术、生活、感悟 -- Laoer的博客</description>
	<lastBuildDate>Mon, 15 Feb 2010 08:36:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>GET方式传递中文错误引发的思考</title>
		<link>http://i.laoer.com/think-about-http-get-chinese-encode-error.html</link>
		<comments>http://i.laoer.com/think-about-http-get-chinese-encode-error.html#comments</comments>
		<pubDate>Fri, 24 Apr 2009 08:21:52 +0000</pubDate>
		<dc:creator>Laoer</dc:creator>
				<category><![CDATA[Java]]></category>
		<category><![CDATA[构架设计]]></category>
		<category><![CDATA[Base64]]></category>
		<category><![CDATA[HTTP]]></category>

		<guid isPermaLink="false">http://i.laoer.com/?p=298</guid>
		<description><![CDATA[今天在“天乙社区”里，网友报了一个BUG，在版区内搜索中文的时候，分页会出现问题，我在社区里试了一下，果然有这样的问题，我记得这个问题在写代码的时候特意注意过，我做了URLEncoder和URLDecoder，但还是有问题，当时可能测试不够，把这个问题漏过了，这个问题出现的原因很简单，就是在GET方式传递中文的时候，由于编码的问题出现了字符的错误，解决的方法也有几种：
第一种，是不采用GET方式，采用POST方式，可以在页面上加入一个隐藏表单，把数据写进去，分页的时候，用JavaScript提交，POST方式发送到服务器，这样的做法可以很好的保护数据完整性，也比较安全，但是对于社区来说需要修改页面，比较麻烦。
第二种，就是将中文内容做一些编码，比如Base64，之后再做一次URLEncoder，这样应该就可以传递正确的信息，我就按照这个方法修改了一下程序，没有问题了。
这时候我突然想起了Taobao的奇怪URL编码方式，比如我在淘宝上搜索“尼康 镜头”，请求到的地址是
http://search1.taobao.com/browse/0/n-g,ytq37njax2243ny&#8212;&#8212;-2&#8212;&#8212;&#8212;40&#8211;commend-0-all-0.htm?at_topsearch=1&#38;ssid=e-p1-s5
注意其中的“ytq37njax2243ny”，在JavaEye里有位高人写了一篇关于淘宝URL编码规则的文章，着实很强，淘宝也用的是Base64，只不过用自己的码表，这样编码出来的字符串就像“ytq37njax2243ny”，乍看上去挺怪异的，但为什么要这么做，我似乎明白了一些，淘宝、阿里巴巴都采用他们自己的Webx框架，在其前端专门有模块是处理URL的，包括URL的生成、解析，其好处有很多，其中一个重要的原因应该是解决编码问题，附件是阿里巴巴webx的一个文档，大家可以看看，有什么启发。
阿里巴巴webx框架资料
]]></description>
			<content:encoded><![CDATA[<p>今天在“<a title="天乙社区" href="http://bbs.laoer.com/main.html" target="_blank">天乙社区</a>”里，网友报了一个BUG，在版区内搜索中文的时候，分页会出现问题，我在社区里试了一下，果然有这样的问题，我记得这个问题在写代码的时候特意注意过，我做了URLEncoder和URLDecoder，但还是有问题，当时可能测试不够，把这个问题漏过了，这个问题出现的原因很简单，就是在GET方式传递中文的时候，由于编码的问题出现了字符的错误，解决的方法也有几种：</p>
<p>第一种，是不采用GET方式，采用POST方式，可以在页面上加入一个隐藏表单，把数据写进去，分页的时候，用JavaScript提交，POST方式发送到服务器，这样的做法可以很好的保护数据完整性，也比较安全，但是对于社区来说需要修改页面，比较麻烦。</p>
<p>第二种，就是将中文内容做一些编码，比如Base64，之后再做一次URLEncoder，这样应该就可以传递正确的信息，我就按照这个方法修改了一下程序，没有问题了。</p>
<p>这时候我突然想起了Taobao的奇怪URL编码方式，比如我在淘宝上搜索“尼康 镜头”，请求到的地址是</p>
<p>http://search1.taobao.com/browse/0/n-g,ytq37njax2243ny&#8212;&#8212;-2&#8212;&#8212;&#8212;40&#8211;commend-0-all-0.htm?at_topsearch=1&amp;ssid=e-p1-s5</p>
<p>注意其中的“ytq37njax2243ny”，在JavaEye里有位高人写了一篇<a href="http://www.javaeye.com/topic/286240" target="_blank">关于淘宝URL编码规则的文章</a>，着实很强，淘宝也用的是Base64，只不过用自己的码表，这样编码出来的字符串就像“ytq37njax2243ny”，乍看上去挺怪异的，但为什么要这么做，我似乎明白了一些，淘宝、阿里巴巴都采用他们自己的Webx框架，在其前端专门有模块是处理URL的，包括URL的生成、解析，其好处有很多，其中一个重要的原因应该是解决编码问题，附件是阿里巴巴webx的一个文档，大家可以看看，有什么启发。</p>
<p><a href="http://i.laoer.com/wp-content/uploads/2009/04/webx.rar">阿里巴巴webx框架资料</a></p>
]]></content:encoded>
			<wfw:commentRss>http://i.laoer.com/think-about-http-get-chinese-encode-error.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
