#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)
Комментариев нет:
Отправить комментарий