PHP主动断定字符集并转码的办法分享

    添加时间:2013-7-22 点击量:

    PHP主动断定字符集并转码。


    道理:
    因为gb2312/gbk是中文两字节,这两个字节是有取值局限的,而utf-8中汉字是三字节,同样每个字节也有取值局限。而英文不 管在何种编码景象下,都是小于128,只占用一个字节(全角除外)。

    若是是文件情势的编码搜检,还可以直接check utf-8的BOM信息。话不久不多说,直接上函数,这个函数是用来对字符串进行搜检和转码的。
    代码如下:



    <?php
    
    /
    主动断定字符集并转码
    /
    function safeEncoding(¥string¥outEncoding =UTF-8
    {
    ¥encoding = UTF-8;
    for¥i=0;¥i<strlen¥string);¥i++
    {
    iford¥string{¥i})<128
    continue;

    if((ord¥string{¥i})&224)==224
    {
    //第一个字节断定经由过程
    ¥char = ¥string{++¥i};
    if((ord¥char)&128)==128
    {
    //第二个字节断定经由过程
    ¥char = ¥string{++¥i};
    if((ord¥char)&128)==128
    {
    ¥encoding = UTF-8;
    break;
    }
    }
    }

    if((ord¥string{¥i})&192)==192
    {
    //第一个字节断定经由过程
    ¥char = ¥string{++¥i};
    if((ord¥char)&128)==128
    {
    // 第二个字节断定经由过程
    ¥encoding = GB2312;
    break;
    }
    }
    }
    //by www.jbxue.com

    ifstrtoupper¥encoding) == strtoupper¥outEncoding))
    return ¥string;
    else
    return iconv¥encoding¥outEncoding¥string);
    }
    ?>

    所有随风而逝的都属于昨天的,所有历经风雨留下来的才是面向未来的。—— 玛格丽特·米切尔 《飘》
    分享到: