在用ajax+JavaScript+php进行局部刷新的时候要用到JavaScript传值,如果处理不当会出现乱码,在本地测试没有问题的,在服务器上就是不行,我做了很长时间的测试,终于把问题解决掉了,我把两种可以解决的方法写下,希望对你有所帮助:

  1.在JavaScript传值的时候为了出现乱码问题,你可以使用JavaScript特有的函数escape进行编码的转换,如xmlhttp.send("comment_input="+escape(comment_input)),在php页面获取该值的时候把转码后的值在进行转码,可以使用

function unescape($str)//定义unescape解码函数(解决js传递乱码问题)

 $str = rawurldecode($str); 
 preg_match_all("/(?:%u.{4})|.+/",$str,$r); 
 $ar = $r[0]; 
 foreach($ar as $k=>$v)
 { 
     if(substr($v,0,2) == "%u" && strlen($v) == 6) 
     $ar[$k] = iconv("UCS-2","GB2312",pack("H4",substr($v,-4)));
 } 
 return join("",$ar);

}

这样既可实现中文编码的转换,进而在php换取该值的时候不会出现乱码;

2.或许你会觉得第一种方法比较麻烦,或者它不能够解决你所遇到的问题,我在此在写一种方法希望可以帮你解决 在ajax进行传值的时候,你可以不用去管中文编码是怎样转换的,既直接把你获取的值传递过去,如xmlhttp.send("comment_input="+comment_input),但是这样做的时候,由于浏览器会对中文进行编码的解析,在php页面获取该值的时候,你获取会得到乱码,这样要用到php一个特有的函数,把你在php页面获取的值进行一次编码转换,函数为md_convert_encoding("获取的字符串","GB2312","UTF-8");然后进行输出,既可解决乱码的问题.....

   希望这两种方法,可以解决你遇到的问题.....谢谢...