php判断字符集并转码的函数代码

发布时间:2020-03-16编辑:脚本学堂
分享一例php代码,可用于判断文件的字符集,并作相应转码,还可以直接检测utf-8的BOM信息。有需要的朋友参考下。

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++)     
    {     
        if(ord($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;     
            }     
        }     
    }     
              
    if(strtoupper($encoding) == strtoupper($outEncoding))     
        return $string;     
    else    
        return iconv($encoding,$outEncoding,$string);     

?>

您可能感兴趣的文章:
学习php字符串编码的转换与判断
php获取字符串的编码格式的函数
PHP字符串编码问题分析
php iconv字符串编码转换(GBK到UTF8字符集)的例子
php 自动检测内容编码并转换的代码
php编码转换函数(自动转换字符集支持数组转换)
php改变编码的函数iconv