Как определить, нужно ли преобразовать строку в UTF-8 - PullRequest
0 голосов
/ 09 мая 2019

Я пишу скрипт для импорта данных из файла 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...