xajax乱码解决办法

xajax给blog写了几个AJAX的应用,比如这个搜索页面,挺容易的,xajax到底是现在PHP下面最好的module,而且是为数不多的支持中文。


不过在开发中还是遇到中文乱码的问题,因为xajax的XMLHTTP对象Post表单的时候,是默认的用UTF-8字符来发送的。如果你的网页本来就是用的UTF-8编码的话,那么接收到的数据是正常的;如果你的网页编码是GB2312的话,问题就来了,POST过来的数据是UTF-8,而你整个站点是用GB2312来显示,那么所有的中文字符将全部变成乱码。


解决的方法其实也很简单,在php里面用 iconv( “UTF-8”, “gb2312” , $FormValues[‘a’]) 函数转换一下就可以了。


另外需要在 xajax.class.php 需要改一下默认的encoding:


define (‘XAJAX_DEFAULT_CHAR_ENCODING’, ‘gb2312’ );


Windows主机下如果是php4.3.x版本需要单独加载iconv()函数库(需要在php.ini中正确设置extension_dir,比如extension_dir = “C:/php/extensions/”
,同时需要取消;extension=php_iconv.dll一行前面的;号,并将c:phpdllsiconv.dll复制到c:windowssystem32目录下。