如何检测字符串是否需要转换为UTF-8

时间:2019-05-09 08:29:07

标签: php encoding utf-8

我正在编写一个脚本,以将csv文件中的数据导入数据库。 我们不确定文件是否始终使用UTF-8。它们将由Windows上的“普通”人员制作。

这是我最后得到的功能

function isUTF8($filename)
{
    $info = finfo_open(FILEINFO_MIME_ENCODING);
    $type = finfo_buffer($info, file_get_contents($filename));
    finfo_close($info);

    return $type == 'utf-8' || $type == 'us-ascii';
}

function returnStringUTF8($string,$isUTF8){
    if(!$isUTF8 || mb_detect_encoding($string, 'UTF-8', true)){
        $string=utf8_encode($string);
    }
    return $string;
}

这是我将如何使用它们

$isUTF8 = isUTF8($filename);

.... Parsing the file

$myUTF8EncodedString = returnStringUTF8($stringFromTheFile,$isUTF8)

....

根据我的测试,isUTF8函数似乎可以正常工作,但我读过某个地方有时可能是错误的。这就是为什么我决定通过添加函数returnStringUTF8来“仔细检查”的原因。但是我不确定该函数是否总是返回正确的东西,即以UTF-8编码的字符串。

0 个答案:

没有答案