PHP中使用ajax中文乱码问题解决办法
当网页是utf-8编码的时候,使用ajax一般不会出现中文乱码的情况。但当网页编码为gb2313的时候,则会出现中文乱码的现象。这是由于XMLHttpRequest传送数据是UTF-8编码的,所以,可能会导致中文乱码问题。我的解决方法是,全部采用UTF-8编码。
当网页是utf-8编码的时候,使用ajax一般不会出现中文乱码的情况。但当网页编码为gb2313的时候,则会出现中文乱码的现象。这是由于XMLHttpRequest传送数据是UTF-8编码的,所以,可能会导致中文乱码问题。我的解决方法是,全部采用UTF-8编码。
静态部分用<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 申明一下是utf-8编码的。另外注意不要使用windows自带的记事本编辑,不能保存为utf-8格式。
动态部分用
header('Content-type:text/html;charset=utf-8');
另外使用responseXML方法的话,动态部分要用
header('Content-type:text/xml;charset=utf-8');
动态部分用
header('Content-type:text/html;charset=utf-8');
另外使用responseXML方法的话,动态部分要用
header('Content-type:text/xml;charset=utf-8');
另外有时可能需要使用函数iconv('GB2312', 'utf-8',$str)来强制将gb2312编码转换成utf-8.
PHP发送中文、Ajax接收,只需在php顶部加入一句:
header('Content-type: text/html;charset=GB2312'); xmlHttp会正确解析其中的中文。
header('Content-type: text/html;charset=GB2312'); xmlHttp会正确解析其中的中文。
Ajax发送中文、PHP接收,这个则比较复杂:
Ajax中先用encodeURIComponent对要提交的中文进行编码
PHP中则要使用iconv函数:
$GB2312string=iconv( 'UTF-8','gb2312//IGNORE' , $RequestAjaxString);//注意红色部分!!!
Ajax中先用encodeURIComponent对要提交的中文进行编码
PHP中则要使用iconv函数:
$GB2312string=iconv( 'UTF-8','gb2312//IGNORE' , $RequestAjaxString);//注意红色部分!!!
PHP写入MySQL数据库,在建立conn时,query一下set names "gb2312"