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
$ret.=chr(substr($utf8,$i,3));
return $ret;
}
function u2utf8($c)
{
for($i=0;$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传值乱码的问题的细致内容,更多请关注ki4网别的相干文章!
收藏 | 0