最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

如何解决php ajax传值乱码的问题

来源:动视网 责编:小采 时间:2020-11-02 18:25:32
文档

如何解决php ajax传值乱码的问题

如何解决php ajax传值乱码的问题:php ajax传值乱码的解决办法:1、将前后台页面以及数据库统一采用UTF8编码;2、在存入数据库时使用mysql_query("set names gb2312");方法;3、使用ICONV函数对从数据库中取出的字符串进行编码转换。推荐:《PHP视频教程》在php网站开发中
推荐度:
导读如何解决php ajax传值乱码的问题:php ajax传值乱码的解决办法:1、将前后台页面以及数据库统一采用UTF8编码;2、在存入数据库时使用mysql_query("set names gb2312");方法;3、使用ICONV函数对从数据库中取出的字符串进行编码转换。推荐:《PHP视频教程》在php网站开发中


php ajax传值乱码的解决办法:1、将前后台页面以及数据库统一采用UTF8编码;2、在存入数据库时使用“mysql_query("set names gb2312");”方法;3、使用ICONV函数对从数据库中取出的字符串进行编码转换。

推荐:《PHP视频教程》

在php网站开发中,为了增加用户体验度,Ajax是一种经常使用的技术,但是对于初学者来说,时常会碰到Ajax传值中文字符串时变成乱码的问题,有什么办法可以解决PHP AJAX传值中文字符乱码的问题呢?

  我们知道Ajax技术由JavaScript演变而来,而javascript使用UTF-8编码,当前后台页面采用GBK或者其他编码,同时没有进行编码转换时,就会出现中文字符乱码问题。

PHP Ajax传值中文字符乱码解决方法

  方法一、前后台页面以及数据库统一采用UTF8编码,这是最简单的方法。

  方法二、当网站已采用了诸如GBK/GB2312编码时,分两种情况:

  1、Ajax发送中文字符、PHP(后台程序)进行接收发生乱码时,使用GBK与UTF8的转换函数对接受的字符串进行编码转换,再存入相关数据库,这里假设数据库采用的编码是GBK或者GB2312,如果配置的PHP运行环境支持ICONV函数,你也可使用ICONV函数进行编码转换,然后在存入数据库时

mysql_query("set names gb2312");

即可解决Ajax传值中文乱码问题。

  2、PHP发送中文字符、Ajax(前台页面)进行接收发生乱码时,同样可以使用ICONV函数对从数据库中取出的字符串进行编码转换,再传值至Ajax前台,即responseText。或者在PHP(后台程序)输出字符流之前加上

header('Content-type: text/html;charset=gb2312');

即可。特别指出:在使用Ajax做多级联动(比如省份城市联动)时,采用xml交互形式,在输出XML之前也必须加上header。

  同时贴出GB2312与UTF8的转换函数,方便大家在遇到Ajax中文乱码问题时多一种解决方法。

function gb2utf8($gb,$filename)
{
 if(!trim($gb))
 return $gb;
 //$filename="gb2312.txt";
 $tmp=file($filename);
 $codetable=array();
 while(list($key,$value)=each($tmp))
 $codetable[hexdec(substr($value,0,6))]=substr($value,7,6);
 $utf8="";
 while($gb)
 {
 if (ord(substr($gb,0,1))>127)
 {
 $thisgb=substr($gb,0,2);
 $gb=substr($gb,2,strlen($gb));
 $utf8.=u2utf8(hexdec($codetable[hexdec(bin2hex($thisgb))-0x8080]));
 }
 else
 {
 $gb=substr($gb,1,strlen($gb));
 $utf8.=u2utf8(substr($gb,0,1));
 }
 }
 $ret="";
 for($i=0;$i<strlen($utf8);$i+=3)
 $ret.=chr(substr($utf8,$i,3));
 return $ret;
}
function u2utf8($c)
{
 for($i=0;$i<count($c);$i++)
 $str="";
 if ($c < 0x80) {
 $str.=$c;
 }
 else if ($c < 0x800) {
 $str.=(0xC0 $c>>6);
 $str.=(0x80 $c & 0x3F);
 }
 else if ($c < 0x10000) {
 $str.=(0xE0 $c>>12);
 $str.=(0x80 $c>>6 & 0x3F);
 $str.=(0x80 $c & 0x3F);
 }
 else if ($c < 0x200000) {
 $str.=(0xF0 $c>>18);
 $str.=(0x80 $c>>12 & 0x3F);
 $str.=(0x80 $c>>6 & 0x3F);
 $str.=(0x80 $c & 0x3F);
 }
 return $str;
}

注:此函数需要使用GB2312中文编码表,请点击这里下载,由于是采用gb2312,对于一些比较生僻的词在转换时可能会出现乱码。

文档

如何解决php ajax传值乱码的问题

如何解决php ajax传值乱码的问题:php ajax传值乱码的解决办法:1、将前后台页面以及数据库统一采用UTF8编码;2、在存入数据库时使用mysql_query("set names gb2312");方法;3、使用ICONV函数对从数据库中取出的字符串进行编码转换。推荐:《PHP视频教程》在php网站开发中
推荐度:
标签: 乱码 解决 php
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top