2010-03-05 3 views
1

Я недавно редактировал текстовый файл с кодировкой в ​​Юникоде, который также включает в себя тайские символы (наряду с «нормальными» символами). По какой-то причине после каждой последовательности тайских персонажей появилась новая строка.Проблема кодирования символов

После некоторого смещения с помощью C, пытаясь удалить все символы новой строки, я активировал vim для проверки файла. По-видимому, после каждой тайской последовательности символов появляется строка «^ M» (без кавычек).

Почему это происходит, и что это «^ М»? Я обнаружил, что могу исправить проблему, удалив последние три символа из тайской строки, но, безусловно, должен быть более элегантный способ исправить это ...

+0

Скорее всего, это проблема с кодировкой файла. Unix и Windows имеют разные соглашения для новой строки. Использует ли ваш код C '\ r'? Открывает ли он файлы в текстовом режиме или в двоичном режиме? –

+0

В моем C-коде используется \ n. Исходный файл был закодирован в кодировке UTF-8. Никакие символы новой строки не являются проблематичными, только иностранные символы создают проблему (китайские символы тоже, как я только что понял) ... – ryyst

ответ

0

Это не имеет никакого отношения к тому факту, что вы есть некоторые тайские символы в файле. ^M («морковь М») - это представление возврата каретки Microsoft (DOS). Dos2unix файл, чтобы избавиться от них, прежде чем редактировать его в vim.

Смежные вопросы