<?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>army8735 &#187; ajax</title>
	<atom:link href="http://army8735.org/tag/ajax/feed" rel="self" type="application/rss+xml" />
	<link>http://army8735.org</link>
	<description>我可以A，我也可以-A，我可以同时A和-A。</description>
	<lastBuildDate>Fri, 25 Nov 2011 04:07:52 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>诡异的ajax和浏览器编码</title>
		<link>http://army8735.org/2008/09/10/29.html</link>
		<comments>http://army8735.org/2008/09/10/29.html#comments</comments>
		<pubDate>Wed, 10 Sep 2008 09:11:49 +0000</pubDate>
		<dc:creator>army8735</dc:creator>
				<category><![CDATA[前端开发]]></category>
		<category><![CDATA[ajax]]></category>
		<category><![CDATA[encode]]></category>

		<guid isPermaLink="false">http://army.512j.com/blog/?p=29</guid>
		<description><![CDATA[缩小讨论范围，仅限常用的浏览器：ie和ff；仅限常用的搜索引擎：google和百度。
先看google：搜索关键字时由于页面编码也是utf8，所以等于直接encodeURI后添加到url后面；
再看百度：由于页面编码是gb2312，所以关键字编码相当于urlencode后添加到url后面。
于是，矛盾就出现了。假如从搜索引擎搜索后点击链接连到我们的页面，想根据document.referrer来提取出关键字，再交给后台处理一下，最后返回显示的时候，google就和百度战起来了……
这还不算什么，即使一段相同的encodeURI编码传给后台处理一下，再通过ajax返回前端显示的时候，ff和ie也战起来了……
好吧好吧，这两对儿真是恩恩怨怨反复纠缠你死我活鱼死网破啊！最终还得我们来辛辛苦苦任劳任怨兢兢业业毫无怨言地来调节。
&#8212;
首先，从document.referrer提取出的关键字要根据来源判断，从google来的是utf8，从百度来的是gb2312。传给xhr时加一个参数标明来源，再加个参数判断标明用户使用浏览器。
然后，后端处理的php逻辑页面，必须改为utf8编码的文件。通过判明来源和浏览器种类分别处理：ff下的gb2312就转换为utf8；ie下无论什么都转为utf8。
最后，在前端gbk编码的情况下显示，终于结果正常了……
&#8212;
其实这种情况足以应付大多数需要了，因为搜索引擎编码我们常用的不是gb2312就是utf8，像yahoo、qq等。而浏览器除了ie也就ff、极少数用标准的opera什么等等等等等。
这次实验证明了：跨国婚姻矛盾多啊！性格不合是最主要的原因！
]]></description>
			<content:encoded><![CDATA[<p>缩小讨论范围，仅限常用的浏览器：ie和ff；仅限常用的搜索引擎：google和百度。</p>
<p>先看google：搜索关键字时由于页面编码也是utf8，所以等于直接encodeURI后添加到url后面；<br />
再看百度：由于页面编码是gb2312，所以关键字编码相当于urlencode后添加到url后面。</p>
<p>于是，矛盾就出现了。假如从搜索引擎搜索后点击链接连到我们的页面，想根据document.referrer来提取出关键字，再交给后台处理一下，最后返回显示的时候，google就和百度战起来了……</p>
<p>这还不算什么，即使一段相同的encodeURI编码传给后台处理一下，再通过ajax返回前端显示的时候，ff和ie也战起来了……</p>
<p>好吧好吧，这两对儿真是恩恩怨怨反复纠缠你死我活鱼死网破啊！最终还得我们来辛辛苦苦任劳任怨兢兢业业毫无怨言地来调节。</p>
<p>&#8212;</p>
<p>首先，从document.referrer提取出的关键字要根据来源判断，从google来的是utf8，从百度来的是gb2312。传给xhr时加一个参数标明来源，再加个参数判断标明用户使用浏览器。</p>
<p>然后，后端处理的php逻辑页面，必须改为utf8编码的文件。通过判明来源和浏览器种类分别处理：ff下的gb2312就转换为utf8；ie下无论什么都转为utf8。</p>
<p>最后，在前端gbk编码的情况下显示，终于结果正常了……</p>
<p>&#8212;</p>
<p>其实这种情况足以应付大多数需要了，因为搜索引擎编码我们常用的不是gb2312就是utf8，像yahoo、qq等。而浏览器除了ie也就ff、极少数用标准的opera什么等等等等等。</p>
<p>这次实验证明了：跨国婚姻矛盾多啊！性格不合是最主要的原因！</p>
]]></content:encoded>
			<wfw:commentRss>http://army8735.org/2008/09/10/29.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

