+ -
当前位置:首页 → 问答吧 → 急寻高手给翻译一下这段代码

急寻高手给翻译一下这段代码

时间:2010-08-27

来源:互联网

function _U2_Utf8_Gb($_C)
{
        $_String = '';
        if($_C < 0x80) $_String .= $_C;
        elseif($_C < 0x800)
        {
                $_String .= chr(0xC0 | $_C>>6);
                $_String .= chr(0x80 | $_C & 0x3F);
        }elseif($_C < 0x10000){
                $_String .= chr(0xE0 | $_C>>12);
                $_String .= chr(0x80 | $_C>>6 & 0x3F);
                $_String .= chr(0x80 | $_C & 0x3F);
        } elseif($_C < 0x200000) {
                $_String .= chr(0xF0 | $_C>>18);
                $_String .= chr(0x80 | $_C>>12 & 0x3F);
                $_String .= chr(0x80 | $_C>>6 & 0x3F);
                $_String .= chr(0x80 | $_C & 0x3F);
        }
        
        return iconv('UTF-8', 'GB2312', $_String);
}

作者: wdxt206   发布时间: 2010-08-27

应该是汉化程序。

作者: sijinvwang   发布时间: 2010-08-27

新手上路,敬请关照!

作者: juqi   发布时间: 2010-08-27

utf-8编码转换为gb编码的算法。

utf-8编码字符的长度是是根据编码区变化的,1~4个字节的长度都有(不定长),楼主提供的代码根据区位的不同,分4种情况来转换。比如 if($_C < 0x80),0x80是十进制的128,这个条件是转换ASCII编码字符,在GB编码和utf-8编码中ASCII是相同的。

具体的编码细节,需要参考GB和utf-8编码规范。

作者: lajp   发布时间: 2010-08-27