@weart

Как разобраться с разной кодировкой строк и сконвертировать их в utf8?

Привет всем. Имеется куча архивов с файлами, имена которых могут быть в самых неожиданных кодировках.
Задача: прочитать все архивы и корректно записать имена файлов их них в бд.
Но я не могу корректно определить кодировку. Пытался типа так:

$encoding = mb_detect_encoding($fileName, ['ASCII', 'UTF-8', 'ISO-8859-1', 'Windows-1251', 'IBM866'], true);
return mb_convert_encoding($fileName, 'UTF-8', $encoding);


PHP не корректно определяет кодировку строки. Ради интереса я проверил онлайн вот здесь https://www.online-decoder.com/ru и вижу следующий результат корректно полученной строки:

Раз
654f96beb2fac055812090.png

Два
654f97270b285442295710.png

Вопрос - как можно такое же провернуть на php?
  • Вопрос задан
  • 70 просмотров
Решения вопроса 1
@weart Автор вопроса
В общем, методом тыка проблема решилась

С таким encoding не работает:
$fileName = $zip->getNameIndex($i);

А вот с таким все ок:
$stat = $zip->statIndex($i, 64);
$fileName = $stat['name'];
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@rPman
Не мучайся, используй утилиту enca (есть в репозитариях любого linux), если хочется сложнее, полистай эту тему к примеру, там и в комментариях накидали идей
Ответ написан
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
mb_check_encoding пробовал? кроме того имя может быть и не в мультибайтовой кодировке
Ответ написан
Ваш ответ на вопрос

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

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