За последние 24 часа нас посетили 15697 программистов и 1543 робота. Сейчас ищут 914 программистов ...

Перекодировка Unicode (несколько языков одновременно)

Тема в разделе "Прочие вопросы по PHP", создана пользователем eivr, 25 дек 2014.

  1. eivr

    eivr Новичок

    С нами с:
    25 дек 2014
    Сообщения:
    8
    Симпатии:
    0
    Имеется файл (привожу в бинарном виде):
    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");
    Все варианты неправильно перекодируют кириллицу.
     
  2. denis01

    denis01 Суперстар
    Команда форума Модератор

    С нами с:
    9 дек 2014
    Сообщения:
    12.227
    Симпатии:
    1.714
    Адрес:
    Молдова, г.Кишинёв
  3. eivr

    eivr Новичок

    С нами с:
    25 дек 2014
    Сообщения:
    8
    Симпатии:
    0
    Выяснились доп. детали.
    Как оказалось, файл ВасяKüns перекодируется нормально.
    Но вот если взять такой файл (с переводом строки):
    M
    ВасяKüns

    то в результате получаем
    M
    асяыüns


    Убираем перевод строки, (MВасяKüns) - и все перекодируется нормально.
    Перекодирую так:
    Код (Text):
    1. $s = mb_convert_encoding(fgets($fi), "UTF-8", "UTF-16");
    Стоп, а может ф-я fgets неправильно читает переводы строки в Unicode?
    Видимо придется писать свою mb_fgets()...