将字符串 由一个字符集 转成 另一个字符集 及 随机生成中文

今天遇到了一个麻烦 字符集的转换

               因为这个网页是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

posted @ 2015-04-20 21:41  IT树  阅读(590)  评论(0编辑  收藏  举报