Страницы

Поиск по вопросам

воскресенье, 22 декабря 2019 г.

Проблема с буквой “Й” в UTF-8

#linux #mac #hex #diff


Пытаюсь сравнить два файла, оба содержат список файлов/папок, один сделан на маке,
другой на linux.
diff показывает разницу где ее на первый взгляд нет.
Перевод в hex режим показал что одна и та же буква (визуально это й)
в одной системе сформировалась след. символом d0b9 а в другой d0b8.
Может кто знает почему ? и как сравнивать в таком случае ?
    


Ответы

Ответ 1



Буква "й" может быть кодирована в unicode двумя способами: как один символ - собственно, "й" (Cyrillic Small Letter Short I), и как два символа - "и" (Cyrillic Small Letter I) и Combining Breve ("шляпка"). Это может создавать определённые проблемы при сравнении и поиске текста. Подробнее можно почитать в этой статье: Хабрахабр: «Й» вам не «и» краткое! О важности нормализации Unicode В вашем случае можно файл с "разложенной" буквой "й" перед сравнением прогнать через sed с помощью следующей команды: cat файл | sed "s/\xD0\xB8\xCC\x86/\xD0\xB9/g" (предложено участником Mike)

Комментариев нет:

Отправить комментарий