Как определить правильную кодировку в PHP? mb_detect_encoding не работает

Мне нужно быть в состоянии обнаружить кодировку строки, но mb_detect_encoding не работает.

Я получаю строку из файла (file_get_contents) и я знаю, что файл, который доставлял мне неприятности, был в UTF-16 LE. Однако из документов я понимаю, что обнаружить эту кодировку невозможно (mb_detect_order : «Для UTF-16, UTF-32, UCS2 и UCS4 обнаружение кодирования всегда будет неудачным.»).

Как я могу получить кодирование строки надежным способом в PHP? Любая возможная кодировка?

Я потерял несколько часов, пытаясь решить эту проблему, но не нашел хорошего ресурса. Я хотел бы иметь возможность автоматизировать это, поэтому, если мой файл изменит свою кодировку, моя программа сможет обработать его (я получаю файл с другого веб-сайта).


Я попробовал это безуспешно, он говорит мне UTF-8:

mb_detect_encoding($proper_string, 'UTF-16LE,UCS-2,UTF-8,ASCII', true)

Я также попробовал это:

echo 'mb_check_encoding($fileContents, \'UTF-8\'): ' . mb_check_encoding($fileContents, 'UTF-8') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'UTF-16\'): ' . mb_check_encoding($fileContents, 'UTF-16') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'UTF-16LE\'): ' . mb_check_encoding($fileContents, 'UTF-16LE') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'UCS-2\'): ' . mb_check_encoding($fileContents, 'UCS-2') . "\n";
//true
echo 'mb_check_encoding($fileContents, \'ISO-8859-1\'): ' . mb_check_encoding($fileContents, 'ISO-8859-1') . "\n";
//true

1

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]