ajax中文乱码问题解决方法
JavaScript #ajax #中文 #乱码2012-05-19 00:39
ajax乱码解决办法一:
在服务器指定发送数据的格式:
在jsp文件中:response.setContentType("text/text;charset=UTF-8");//返回的是txt文本文件
或是
response.setContentType("text/xml;charset=UTF-8");//返回的xml文件
PHP:header(”Content-Type:text/html;charset=GB2312”);
ajax乱码解决方法二:
PHP发送中文、Ajax接收只需在php顶部加入一句:
header('Content-type: text/html;charset=GB2312');
xmlHttp会正确解析其中的中文。
Ajax发送中文、PHP接收
这个比较复杂:
Ajax中先用encodeURIComponent对要提交的中文进行编码
PHP中:
$GB2312string=iconv( 'UTF-8', 'gb2312//IGNORE' , $RequestAjaxString);
PHP写入MySQL数据库
建立conn时,query一下set names "gb2312"
==================================================
注意红色部分!!!否则无法使用!!!具体原因自己猜!
iconv( "UTF-8",”GBK” , $gametypes["name"]);
原创:
我的乱码问题是AJAX取数据时产生乱码,本来页面是采用GBK编码的。后来显示为乱码,我使用UE把它转换成UTF-8后,
页面上原来的元素就可以显示正确了。但是,数据库取出来的值还是会乱码。
ob_get_contents ();
取出所有的显示数据,然后输出到日志文件,显示全是乱码。
使用UE把文件再转换成GBK,然后再输出,显示就正确了。
这里再使用:header('Content-Type:text/html;charset=GBK');
前台页面显示就正常。
在试过这N多方法后,很多人都没发现,解决的方法其实很简单,而且其答案就在我们之前处理的JSP乱码之中。让我们先看一下AJAX的经典请求代码
xmlhttp.open( "post", url, async );
xmlhttp.setRequestHeader( "Content-Type", "text/html" );
xmlhttp.send( params );
通过前面的说明,不知道你现在看出端倪了没有。不知道是受了网上教程的影响还是其它方面影响,setRequestHeader并是万年不变的,也没人想过去改它,而问题就正好出在这个地方。回想一个JSP页面内容的编码设置,其中有这么一节:
contentType="text/html; charset=UTF-8"
现在知道问题了吧,所以我们要把第二句代码改为:
xmlhttp.setRequestHeader( "Content-Type", "text/html;charset=UTF-8" );
最后别忘了在返回数据时也设置上:
response.setContentType( "text/xml" );
response.setCharacterEncoding( "UTF-8" );
上面讲到的几种ajax中文乱码解决方法都是利用了header('Content-Type:text/html;charset=GBK');这类方法对页面的发送与接受处理数据页面编码统一了,大家现在可以尝试一下。
相关文章
- javascript检测浏览器及其版本的代码 2012/05/19
- JavaScript实现禁止右键、复制、另存为、查看源文件 2012/05/18
- javascript解决图片缩放问题 2012/05/18
- JavaScript随机数 2012/05/18
- Javascript键盘事件的组合使用 2012/05/18
- 伦敦2012奥运会倒计时代码javascript版 2012/05/12
- js全选/全不选Checkbox函数 2012/05/09
- javascript的cookie相关函数 2012/05/09
- Document对象详细介绍 2012/05/01
- js判断页面是否加载完成的方法 2012/04/30