用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - php代码库

gb2312编码转utf8编码

2013-07-08 作者: 小蜜锋举报

[php]代码库

//gb2312编码转utf8编码
function gb2utf8($gb)/* Program writen by sadly   modified by agun */{
    if (!trim($gb))
        return $gb;
    $filename = "gb2312.txt";
    $tmp = file($filename);
    $codetable = array();
    while (list($key, $value) = each($tmp))
        $codetable[hexdec(substr($value, 0, 6))] = substr($value, 7, 6);
    
    $ret = "";
    $utf8 = "";
    while ($gb) {
        if (ord(substr($gb, 0, 1)) > 127) {
            $this = substr($gb, 0, 2);
            $gb = substr($gb, 2, strlen($gb));
            $utf8 = u2utf8(hexdec($codetable[hexdec(bin2hex($this)) - 0x8080]));
            for ($i = 0; $i < strlen($utf8); $i += 3)
                $ret. = chr(substr($utf8, $i, 3));
        } else {
            $ret. = substr($gb, 0, 1);
            $gb = substr($gb, 1, strlen($gb));
        }
    }
    return $ret;
}



//unicode编码转utf8编码
function u2utf8($c) {
    for ($i = 0; $i < count($c); $i++)
        $str = "";
    if ($c < 0x80) {
        $str. = $c;
    } else if ($c < 0x800) {
        $str. = (0xC0 | $c >> 6);
        $str. = (0x80 | $c & 0x3F);
    } else if ($c < 0x10000) {
        $str. = (0xE0 | $c >> 12);
        $str. = (0x80 | $c >> 6 & 0x3F);
        $str. = (0x80 | $c & 0x3F);
    } else if ($c < 0x200000) {
        $str. = (0xF0 | $c >> 18);
        $str. = (0x80 | $c >> 12 & 0x3F);
        $str. = (0x80 | $c >> 6 & 0x3F);
        $str. = (0x80 | $c & 0x3F);
    }
    return $str;
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...