今天遇到了一个麻烦 字符集的转换
因为这个网页是utf-8的 但是他获取了一个gbk的数据库 所以为了统一字符集必须要将获取的gbk数据转成utf-8
刚开始我的思路是acsii值得转换 先以gbk的字符集获取数据 然后 用mb_substr($str,$start,$len,'gbk') 来截取一个中文
然后在用ord()获取他的ascii值 之后用chr() 把ascii值转成中文 原理:字符的ascii是不变的 无论它是gbk 还是 utf-8
但是我发现输出的是一个乱码【无论是gbk 还是uft-8】这样更惨
$str='结婚多久啊哈卡斯卡'; $str_len = strlen($str); for($i=0; $i<$str_len; $i++){ $chars = mb_substr($str, $i, 2,'gbk'); $num = ord($chars); echo chr($num); }
然后我查了一些资料发现: 中文是由两个字节的ascii码组成的 即 chr($num).chr($num) 这才能组合成一个中文
如:随机生成中文: echo chr(rand(0xB0,0xCC)).chr(rand(0xA1,0xBB));
但是我用ord() 获取中文的ascii 再用两个chr()连接去了发现获取的的中文已经不是原来的了 所以这种方法失败
经过N次的搜索终于发现 万能的php已经帮我们搞定了 嗨我也是受不了啦
// iconv — 字符串按要求的字符编码来转换 $str = iconv('gbk','utf-8',$str); //把$str 由 gbk 转换成 utf-8
//可以再手册里好好看看 iconv系列 的函数
2015-04-20 21:34:52