﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>BlogJava-关注技术，关注生活-随笔分类-Ajax</title><link>http://www.blogjava.net/errorfun/category/18248.html</link><description>任何事情只要开始去做，永远不会太迟。</description><language>zh-cn</language><lastBuildDate>Tue, 27 Feb 2007 14:29:29 GMT</lastBuildDate><pubDate>Tue, 27 Feb 2007 14:29:29 GMT</pubDate><ttl>60</ttl><item><title>当AJAX遭遇GBK的尴尬</title><link>http://www.blogjava.net/errorfun/archive/2006/12/30/91000.html</link><dc:creator>errorfun</dc:creator><author>errorfun</author><pubDate>Sat, 30 Dec 2006 05:34:00 GMT</pubDate><guid>http://www.blogjava.net/errorfun/archive/2006/12/30/91000.html</guid><wfw:comment>http://www.blogjava.net/errorfun/comments/91000.html</wfw:comment><comments>http://www.blogjava.net/errorfun/archive/2006/12/30/91000.html#Feedback</comments><slash:comments>6</slash:comments><wfw:commentRss>http://www.blogjava.net/errorfun/comments/commentRss/91000.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/errorfun/services/trackbacks/91000.html</trackback:ping><description><![CDATA[
		<p>
				<font size="2">我在之前的一篇文章《<font color="#223355">struts,ajax乱码解决方案》</font>中讲到ajax提交乱码的解决方案。这个方案在utf-8的编码下，不管提交或获取都没有变成乱码，但当你的客户端是GBK编码时提交就会出现乱码（获取时不会）。<a id="Comments1_CommentList_ctl06_NameLink" href="/beansoft/" target="_blank"><font color="#223355">BeanSoft</font></a> 说用encodeURIComponent保险，呵呵，这个不是我没试过，从一开始我就试过了encodeURIComponent ,escape,encodeURI，但最后出来的结果都没我说的那种好。它们使用的结果如下：<br />escape  后提交，getParameter出来的是null，<br />encodeURI　后提交，和没使用用的时候是一个样，<br />encodeURIComponent  后提交，包含特殊字符的请求都无法取得正确的值。<br /><br />使用GBK编码提交后的数据在使用服务器端用new String( value.getBytes("gbk"), "utf-8")后部分可以恢复正确的中文，但有一部分无法恢复，这个原因估计是AJAX提交时设置了编码为UTF-8，但我字符的实际编码是GBK，所以在提交用用request.getParameter()获得的数据是用UTF-8的编码在GBK的字符集中找字符，像我在《<font color="#223355">struts,ajax乱码解决方案》</font><font color="#000000">中说的那样，UTF-8的编码可能有1位2位或3位16进制，如果它这个编码刚好是2位的话，那在GBK可以找到正确的字符（但并不是正确的），但如果是三位呢？那就惨了，它后面的字符全部就会变成乱码，比如%6D%51%C5　%E5%23%1C分别表示一个UTF-8编码的中文字符，那如果在GBK中，就会把它当成三个字符去查找，当然肯定是找不到的，有些找到的也是你读都读不出来的。用new String( value.getBytes("gbk"), "utf-8")后就是用GBK的编码在UTF-8的字符集中查找字符，如果刚好你的字符在UTF-8编码中全部是2位的话，那就能正确恢复，如果不是的话。。。。。。<br /><br />现在还没找到在GBK编码下比较好的解决方案，但今天看到<a id="Comments1_CommentList_ctl06_NameLink" href="/beansoft/" target="_blank"><font color="#223355">BeanSoft</font></a> 的一篇文章《<a class="singleposttitle" id="viewpost1_TitleUrl" href="/beansoft/archive/2006/12/25/89835.html"><strong><font color="#006bad">JSP 中 AJAX 的表单提交中文问题的简单解决方案</font></strong></a><font size="3"></font>》说到使用BASE64的方法，这个倒是没有试过，过两天放假的时候就试一下，如果成功了就跟大家共享一下。<br /><br />PS：因为项目用也用到了FILTER，在提交后第一时间会被改变字符编码，不知道是不是这个增加的乱码解决的复杂性，当然我也试过在getParameter之前改变它的编码回utf-8，但结果是一样的。<br /><br /></font></font>
		</p>
<img src ="http://www.blogjava.net/errorfun/aggbug/91000.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/errorfun/" target="_blank">errorfun</a> 2006-12-30 13:34 <a href="http://www.blogjava.net/errorfun/archive/2006/12/30/91000.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[原创]struts,ajax乱码解决方案</title><link>http://www.blogjava.net/errorfun/archive/2006/12/09/86584.html</link><dc:creator>errorfun</dc:creator><author>errorfun</author><pubDate>Sat, 09 Dec 2006 13:24:00 GMT</pubDate><guid>http://www.blogjava.net/errorfun/archive/2006/12/09/86584.html</guid><wfw:comment>http://www.blogjava.net/errorfun/comments/86584.html</wfw:comment><comments>http://www.blogjava.net/errorfun/archive/2006/12/09/86584.html#Feedback</comments><slash:comments>7</slash:comments><wfw:commentRss>http://www.blogjava.net/errorfun/comments/commentRss/86584.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/errorfun/services/trackbacks/86584.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 乱码问题好像跟我们中国程序员特别有缘，一直困扰着我们，从开始的JSP乱码问题，STRUTS乱码问题，到现在的AJAX乱码问题，无一不是搞得许多程序员焦头烂额的，整天骂XXX产品对中文支持不了，UTF-8无法使用中文啊什么的，其实这里面被骂的产品中其实99％以上是对中文支持非常好的，而出现乱码的原因只是因为自身对国际化支持以及文件编码等信息的认识不知造成的。要知道一个产品那么流行，怎么可能对中文支持不了呢，下面就开始一一帮大家解决这些问题。&nbsp;&nbsp;<a href='http://www.blogjava.net/errorfun/archive/2006/12/09/86584.html'>阅读全文</a><img src ="http://www.blogjava.net/errorfun/aggbug/86584.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/errorfun/" target="_blank">errorfun</a> 2006-12-09 21:24 <a href="http://www.blogjava.net/errorfun/archive/2006/12/09/86584.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>