自己写了一个检测函数,具体使用方法和注意事项如下

自己写了一个检测函数,encoding 函数下方的例子,encoding函数是php内置的一个函数了,在php中我们可以利用mb,具体使用方法和注意事项如下

有关文件编码的检查测试,百度时而一大把都以,但是真的并未有能用的、很五个人提出mb_detect_encoding
检查评定,不过不知为什么小编这不成功,什么都没输出、见到有人写了个巩固版,用 BOM
判定的,小编脱口而出就不介怀了,那东西完全不可相信、最后依据PHP手册里
mb_detect_encoding 函数下方的例子,本人写了多个检查实验函数,
还蕴涵自动物检疫查评定编码并按教导编码读取文件的函数、源码献上。

在php中大家能够利用mb_detect_encoding函数来检查字符串编码或文件编码,mb_detect_encoding函数是php内置的八个函数了,上面大家差不离介绍。

在php中能够用mb_detect_encoding()(卡塔尔函数来推断一个字符串是或不是为某种编码,具体使用格局和注意事项如下:

复制代码 代码如下:
 /**
* 检验文件编码
 * @param string $file 文件路线
* @return string|null 返回 编码名 或 null
*/
 function detect_encoding($file) {
     $list = array(‘GBK’, ‘UTF-8’, ‘UTF-16LE’, ‘UTF-16BE’,
‘ISO-8859-1’);
     $str = file_get_contents($file);
     foreach ($list as $item) {
         $tmp = mb_convert_encoding($str, $item, $item);
         if (md5($tmp) == md5($str)) {
             return $item;
         }
     }
     return null;
}

至于文件编码的检查实验,百度时而一大把都以,可是的确尚未能用的、很两个人提议mb_detect_encoding(State of Qatar检查评定,可是不知为啥笔者那不成功,什么都没输出、看见有人写了个巩固版,用 BOM
推断的,笔者脱口而出就不留意了,那东西完全不可相信、最后依照PHP手册里
mb_detect_encoding
函数下方的事例,本人写了一个检测函数,还包涵自动检查测试编码并按指引编码读取文件的函数、源码献上,不喜勿喷。网络的主意本身试过没用才写的,说倒霉景况不平等引致的。所以意气风发旦没用,也别喷作者,小编只是分享想思路而已、、

须要注意的是,要采取mb_detect_encoding函数,必须开启php中的mbstring扩张(张开php.ini配置,重启服务就可以)。

/**
* 自动解析编码读入文件
* @param string $file 文件路线
* @param string $charset 读取编码
* @return string 重回读取内容
*/
function auto_read($file, $charset=’UTF-8′) {
    $list = array(‘GBK’, ‘UTF-8’, ‘UTF-16LE’, ‘UTF-16BE’,
‘ISO-8859-1’);
     $str = file_get_contents($file);
     foreach ($list as $item) {
        $tmp = mb_convert_encoding($str, $item, $item);
        if (md5($tmp) == md5($str)) {
             return mb_convert_encoding($str, $charset, $item);
         }
     }
    return “”;
}

php手册是那般表达的:

判断情势如下所示:

mb_detect_encoding 检查评定字符的编码, string mb_detect_encoding (
string $str [, mixed $encoding_list = mb_detect_order() [, bool
$strict = false ]] )

if( mb_detect_encoding($str, ‘UTF-8’, true) )
{
    //是UTF-8格式的字符
}

这几个函数有多少个参数 分别是:

英特网有的人讲这些函数推断不太盘算,其实大概依旧没难点的。

1.str:待检查的字符串 。

例子,利用mb_detect_encoding(卡塔尔决断字符是或不是为uft-8编码。

2.encoding_list:encoding_list 是叁个字符编码列表。
编码顺序能够由数组或然逗号分隔的列表字符串钦赐。

$encode = mb_detect_encoding($q, array(‘GB2312′,’GBK’,’UTF-8′));
echo $encode.”<br/>”;
if($encode==”GB2312″)
{
    $q =
iconv(“GBK”,”UTF-8″,$q);
}
else if($encode==”GBK”)
{
    $q = iconv(“GBK”,”UTF-8″,$q);
}
else if($encode==”EUC-CN”)
{
    $q = iconv(“GBK”,”UTF-8″,$q);
}
else//CP936
{
    //$q = iconv(“GB2312″,”UTF-8”,$q);
}

倘使轻巧了 encoding_list 将会接纳 detect_order。

可是 mb_detect_encoding
存在一个硬伤,平时现身判别不纯粹的景观。也许那样就足以消除: