首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > PHP >

php把这种形式的数据转换成汉字会丢失部分字符和数字,求转码的解决方法

2013-09-05 
php把这种形式的数据转换成汉字会丢失部分字符和数字,求转码的解决办法。$code xml_to_json($code)用这

php把这种形式的数据转换成汉字会丢失部分字符和数字,求转码的解决办法。
$code = xml_to_json($code);
用这个函数转换后,汉字等字符会变成下面这样子的
u6c5b\u671f\u5c3e\u58f0\u7684\u5230\u6765\uff0c\u6211\u7701\u5f00\u59cb\u8fdb\u5165\u6c34\u5229\u5efa\u8bbe\u7684\u9ec4\u91d1\u65f6\u671f\u3002\u8bb0\u80058\u670826\u65e5\u83b7\u6089\uff0c\u4eca\u5e74\uff0c\u6211\u7701\u5c06\u5b8c\u6210\u6c34\u5229\u6295\u8d44\u8fbe154\u4ebf\u5143\uff0c\u91cd\u70b9\u6db5\u76d616\u4e2a\u65b9\u9762\u51713286\u4e2a\u9879\u76ee\u3002<\/P>\n\n


我现在下面这个函数把上面这样子的变成汉字,但是会丢失部分字符和数字,求解决办法,。


$code = preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code);
print $code;



[解决办法]
$code = preg_replace_callback('/\\\\u([0-9a-f]{4})/i', create_function( '$matches', 'return mb_convert_encoding(pack("H*", $matches[1]), "UTF-8", "UCS-2BE");'), $str);
可以試試這種
[解决办法]
header('Content-type: text/html;charset=utf-8');
$code =<<< TXT
\u6c5b\u671f\u5c3e\u58f0\u7684\u5230\u6765\uff0c\u6211\u7701\u5f00\u59cb\u8fdb\u5165\u6c34\u5229\u5efa\u8bbe\u7684\u9ec4\u91d1\u65f6\u671f\u3002\u8bb0\u80058\u670826\u65e5\u83b7\u6089\uff0c\u4eca\u5e74\uff0c\u6211\u7701\u5c06\u5b8c\u6210\u6c34\u5229\u6295\u8d44\u8fbe154\u4ebf\u5143\uff0c\u91cd\u70b9\u6db5\u76d616\u4e2a\u65b9\u9762\u51713286\u4e2a\u9879\u76ee\u3002</P>\n\n
TXT;
echo preg_replace("#\\\u([0-9a-f]+)#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code);
echo preg_replace("#\\\u([0-9a-f]{4})#ie", "iconv('UCS-2', 'UTF-8', pack('H4', '\\1'))", $code);
汛期尾声的到来,我省开始进入水利建设的黄金时期。记者月日获悉,今年,我省将完成水利投资达亿元,重点涵盖个方面共个项目。</P>

汛期尾声的到来,我省开始进入水利建设的黄金时期。记者8月26日获悉,今年,我省将完成水利投资达154亿元,重点涵盖16个方面共3286个项目。</P>

丢失字符和数字的原因是你吞噬了多余的字符,unicode 只用4位十六进制表示

热点排行