@KuzmenkoArtem

Какой есть 100% способ перекодировать строку в utf-8?

Например:
  • Загружаю файл в кодировке ISO-8889-5 (может быть любая)
  • Нужно перевести все в utf-8
  • Работать дальше


Пробовал таким способом
$encoding = mb_detect_encoding($a); // возвращает false
$result = mb_convert_encoding($a, "UTF-8", $encoding);
//
//
$encoding = mb_detect_encoding($a, 'iso-8859-4, iso-8859-5, iso-8859-6, iso-8859-7'); // передаем список возможных кодировок, определяет как iso-8859-4, хотя на самом деле iso-8859-5
$result = mb_convert_encoding($a, "UTF-8", $encoding); // неправильно кодирует из-за предыдущего шага
//
//
$result = mb_convert_encoding($a, "UTF-8");  // третий параметр оставляем по умолчанию - кодирует не правильно
$result = mb_convert_encoding($a, "UTF-8", 'auto');  //кодирует не правильно


Также пробовал библиотеку https://github.com/neitanod/forceutf8 - кодирует не правильно
  • Вопрос задан
  • 292 просмотра
Пригласить эксперта
Ответы на вопрос 3
FanatPHP
@FanatPHP
Чебуратор тега РНР
Такого способа нет.
Для стопроцентного результата необходимо знать кодировку исходного текста.
Ответ написан
Adamos
@Adamos
Рассматривайте закодированный текст как шифр замены. Если у вас в этом тексте предполагаются русские слова - частотным анализом и сопоставлением буквенных пар легко определяется тот вариант перекодирования, который выдает реальный текст.
Ответ написан
Комментировать
etrid
@etrid
Всего 2 шага:
1) Узнаем кодироку (ф-я mb_detect_encoding , читай статью https://www.php.net/manual/ru/function.mb-detect-e...
2) Меняем кодировку (ф-я iconv)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы