Имеется файл (привожу в бинарном виде): FF FE 12 04 30 04 41 04 │ 4F 04 4B 00 FC 00 6E 00 73 00 Если открыть его текстовым редактором, поддерживающим Unicode, мы увидим ВасяKüns Нужно перекодировать файл средствами PHP в UTF-8, причем заранее неизвестно, символы каких языков присутствуют в исходном файле. Результат должен получиться такой: EF BB BF D0 92 D0 B0 D1 │ 81 D1 8F 4B C3 BC 6E 73 Я пробовал следующее: utf8_encode iconv mb_convert_encoding($s, "UTF-8", "UTF-16"); Все варианты неправильно перекодируют кириллицу.
А твои кодировки поддерживаются в mb_* функциях? https://php.net/manual/ru/function.mb-detect-encoding.php https://php.net/manual/ru/function.mb-check-encoding.php https://php.net/manual/ru/mbstring.supported-encodings.php https://php.net/manual/ru/function.mb-list-encodings.php
Выяснились доп. детали. Как оказалось, файл ВасяKüns перекодируется нормально. Но вот если взять такой файл (с переводом строки): M ВасяKüns то в результате получаем M асяыüns Убираем перевод строки, (MВасяKüns) - и все перекодируется нормально. Перекодирую так: Код (Text): $s = mb_convert_encoding(fgets($fi), "UTF-8", "UTF-16"); Стоп, а может ф-я fgets неправильно читает переводы строки в Unicode? Видимо придется писать свою mb_fgets()...