A-A+

ajax中文乱码解决方法总结

2016年01月13日 前端设计 暂无评论 阅读 5 views 次

ajax对中文支持不好这是很多朋友这样说的,那么我觉得是他对ajax不了解,在ajax中默认是以utf-8传数据,如果你页面编码不统一就会出现乱码了,只要统一两个页面的编码就没问题了,在php中如果发送页面是 gbk在后台处理页面加上:

  1. header(\'Content-Type:text/html;charset=GBK\');  

就解决中文乱码。

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顶部加入一句:

  1. 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"

现在知道问题了吧,所以我们要把第二句代码改为:

  1. 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');这类方法对页面的发送与接受处理数据页面编码统一了,大家现在可以尝试一下。

标签:

给我留言