<?xml version="1.0" encoding="UTF-8" ?>
<rss version="2.0">
<channel>
<title><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></title> 
<link>http://jackxiang.com/index.php</link> 
<description><![CDATA[赢在IT，Playin' with IT,Focus on Killer Application,Marketing Meets Technology.]]></description> 
<language>zh-cn</language> 
<copyright><![CDATA[向东博客 专注WEB应用 构架之美 --- 构架之美，在于尽态极妍 | 应用之美，在于药到病除]]></copyright>
<item>
<link>http://jackxiang.com/post//</link>
<title><![CDATA[JS读取PHP中设置的中文cookie时出现乱码的解决方法，js设定cookie函数]]></title> 
<author>jack &lt;xdy108@126.com&gt;</author>
<category><![CDATA[WEB2.0]]></category>
<pubDate>Sun, 18 Apr 2010 03:14:33 +0000</pubDate> 
<guid>http://jackxiang.com/post//</guid> 
<description>
<![CDATA[ 
	在PHP中先用escape函数编码，到客户端时利用js中的unescape解码。<br/><br/>escape函数如下:<br/><br/>function escape($str)&nbsp;&nbsp;<br/>&#123;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; preg_match_all(&quot;/[&#92;x80-&#92;xff].&#124;[&#92;x01-&#92;x7f]+/&quot;,$str,$r);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ar&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;$r[0];&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;foreach($ar&nbsp;&nbsp; as&nbsp;&nbsp; $k=&gt;$v)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(ord($v[0]) &lt; 128)&nbsp;&nbsp;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ar[$k] = rawurlencode($v);<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp;&nbsp;&nbsp;<br/><br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; $ar[$k]&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&quot;%u&quot;.bin2hex(iconv(&quot;GB2312&quot;,&quot;UCS-2&quot;,$v));&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &#125;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return&nbsp;&nbsp;&nbsp;&nbsp;join(&quot;&quot;,$ar);&nbsp;&nbsp; <br/>&#125;<br/><br/><br/>例子：test.php<br/><br/>&lt;?php<br/>function&nbsp;&nbsp;&nbsp;&nbsp;escape($str)&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp; <br/>&nbsp;&nbsp; preg_match_all(&quot;/[&#92;x80-&#92;xff].&#124;[&#92;x01-&#92;x7f]+/&quot;,$str,$r);&nbsp;&nbsp; <br/>&nbsp;&nbsp; $ar&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;$r[0];&nbsp;&nbsp; <br/>&nbsp;&nbsp; foreach($ar&nbsp;&nbsp;&nbsp;&nbsp;as&nbsp;&nbsp;&nbsp;&nbsp;$k=&gt;$v)&nbsp;&nbsp;&nbsp;&nbsp;&#123;&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;if(ord($v[0])&nbsp;&nbsp;&nbsp;&nbsp;&lt;&nbsp;&nbsp;&nbsp;&nbsp;128)&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; $ar[$k]&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;rawurlencode($v);&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;&nbsp; <br/>&nbsp;&nbsp;&nbsp;&nbsp; $ar[$k]&nbsp;&nbsp;&nbsp;&nbsp;=&nbsp;&nbsp;&nbsp;&nbsp;&quot;%u&quot;.bin2hex(iconv(&quot;GB2312&quot;,&quot;UCS-2&quot;,$v));&nbsp;&nbsp; <br/>&nbsp;&nbsp; &#125;&nbsp;&nbsp; <br/>&nbsp;&nbsp; return&nbsp;&nbsp;&nbsp;&nbsp;join(&quot;&quot;,$ar);&nbsp;&nbsp; <br/>&#125;<br/>$name = escape(&quot;深圳人&quot;);<br/>setcookie(&quot;name&quot;, $name);<br/>?&gt;<br/><br/>&lt;scrīpt&gt;<br/>function get_cookie(name)<br/>&#123;<br/>var result = null;<br/>var myCookie = document.cookie + &quot;;&quot;;<br/>var searchName = name + &quot;=&quot;;<br/>var startOfCookie = myCookie.indexOf(searchName);<br/>var endOfCookie;<br/>if (startOfCookie != -1)<br/>&#123;<br/>&nbsp;&nbsp; startOfCookie += searchName.length;<br/>&nbsp;&nbsp; endOfCookie = myCookie.indexOf(&quot;;&quot;,startOfCookie);<br/>&nbsp;&nbsp; result = unescape(myCookie.substring(startOfCookie, endOfCookie)); <br/>&#125;<br/>return result;<br/>&#125;<br/><br/>&lt;/scrīpt&gt;<br/>&lt;scrīpt&gt;<br/>document.write(&quot;js:&quot; + unescape(getCookie(&quot;name&quot;)));<br/>&lt;/scrīpt&gt;<br/><br/>另外还有一个方法：<br/><br/>在PHP5中，可以使用setrawcookie()函数来代替，它是在设置cookie值的时候没有编码的，所以在设置cookie的时候也不用先用escape函数编码，这时JS也能直接读取cookie的值<br/><br/>来源：<br/>http://hi.baidu.com/yeakyang/blog/item/3ffd5243fd25fd1573f05db9.html<br/><br/><br/><br/><br/><div class="code">function QCookie(name, value, options)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if (typeof value != &#039;undefined&#039;) &#123;&nbsp;&nbsp;//set cookie<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options = options &#124;&#124; &#123;&#125;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (value === null) &#123;&nbsp;&nbsp; //delete cookie<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;value = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;options.expires = -1;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var expires = &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (options.expires &amp;&amp; (typeof options.expires == &#039;number&#039; &#124;&#124; options.expires.toUTCString)) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var date;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if (typeof options.expires == &#039;number&#039;) &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date = new Date();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else &#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;date = options.expires;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;expires = &#039;; expires=&#039; + date.toUTCString();<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var path = options.path ? &#039;; path=&#039; + options.path : &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var domain = options.domain ? &#039;; domain=&#039; + options.domain : &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;var secure = options.secure ? &#039;; secure&#039; : &#039;&#039;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;document.cookie = &#91;name, &#039;=&#039;, encodeURIComponent(value), expires, path, domain, secure&#93;.join(&#039;&#039;);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&#125;</div><br/><br/>调用方法：<br/><br/><br/><div class="code">&nbsp;&nbsp;&nbsp;&nbsp;var opts = &#123;path:&quot;/&quot;,domain:dmArr&#91;dmLen-2&#93;+&#039;.&#039;+dmArr&#91;dmLen-1&#93;, path: &quot;/&quot;&#125;;<br/>&nbsp;&nbsp;&nbsp;&nbsp;if(u.length==10)&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QCookie(&quot;uin&quot;,&#039;o&#039;+u,opts);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;else&#123;<br/>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;QCookie(&quot;uin&quot;,&#039;o0&#039;+u,opts);<br/>&nbsp;&nbsp;&nbsp;&nbsp;&#125;<br/>&nbsp;&nbsp;&nbsp;&nbsp;QCookie(&quot;skey&quot;,&#039;@m8WiH8888,opts);</div>
]]>
</description>
</item><item>
<link>http://jackxiang.com/post//#blogcomment</link>
<title><![CDATA[[评论] JS读取PHP中设置的中文cookie时出现乱码的解决方法，js设定cookie函数]]></title> 
<author> &lt;user@domain.com&gt;</author>
<category><![CDATA[评论]]></category>
<pubDate>Thu, 01 Jan 1970 00:00:00 +0000</pubDate> 
<guid>http://jackxiang.com/post//#blogcomment</guid> 
<description>
<![CDATA[ 
	
]]>
</description>
</item>
</channel>
</rss>