CoffeeCat's IT Blog

解决iconv函数无法转换某些中文的问题

请先看以下代码,这个页面是GB2312编码的:

<?php
$str = '陶喆';
echo 'gb2312-'.$str;
echo '<br />';
$str = iconv'gb2312' ,'utf-8' , $str );
echo 'utf8-'.$str;
echo '<br />';
$str = iconv('utf-8' , 'gb2312' , $str );
echo 'gb2312-'.$str;
?>

程序做的事情很简单,首先打印出原始的陶喆,这是GB2312编码的,然后转换成UTF-8,最后再转换成GB2312。按照程序逻辑,第3行应该也打出陶喆,不过,实际的输出却是:



我们用UTF-8编码来显示这个网页,可以看到输出是



可见,在从gb2312转换到utf-8的过程中,“喆”不见了。

出现这个问题的原因是“喆”不属于gb2312字符集里的字符,而是属于gbk里的字符,所以,要从gb2312转换到utf-8就不行了

修改程序,将gb2312改成gbk,就可以解决这个问题了。



Ferris Xu
2009-08-21



posted on 2009-08-21 18:24 CoffeeCat 阅读(1804) 评论(0)  编辑 收藏 引用

只有注册用户登录后才能发表评论。
<2009年5月>
262728293012
3456789
10111213141516
17181920212223
24252627282930
31123456

导航

统计

公告

常用链接

留言簿(203)

随笔档案

收藏夹

搜索

最新评论

阅读排行榜

评论排行榜