我正在编写一个脚本,以将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编码的字符串。