Я пишу скрипт для импорта данных из файла CSV в базу данных.Мы не уверены, что файл всегда будет в UTF-8.Их будут делать «средние» люди на окнах.
Вот функции, с которыми я заканчиваю
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.