Некоторые комбинации символов Юникода кажутся проблематичными. Я покажу вам, что я имею в виду, используя Notepad ++.Юникод-символы, испорченные после разрыва строки
- Создайте новый текстовый файл в Notepad ++ и измените кодировку на UTF-8 (спецификация не имеет значения).
- Скопируйте и вставьте следующие четыре стрелки: ↑ ↓ ↙↘. Это должно выглядеть отлично (см. Первое изображение ниже).
- Теперь вставьте новую строку после второй стрелки (Windows/Unix не имеет значения). Теперь первая строка все еще выглядит нормально, , но стрелки во второй строке заменяются полями-заполнителями (см. Второе изображение ниже).
- Сохранение и повторное открытие не имеет значения. Все еще коробки во второй строке. Удалите линию, и все снова выглядит отлично.
Эта проблема не только для Notepad ++. Другие программы также показывают мусор при загрузке текстового файла с помощью строки. Удивительно, но стандартный блокнот Windows отображает его просто отлично.
Это рабочий файл после того, как в шестнадцатеричном и один раз в Notepad ++:
E2 86 91 E2 86 93 E2 86 99 E2 86 98
Это сломанный файл. Обратите внимание, что все это отличается от добавленной строки (0D 0A
).
E2 86 91 E2 86 93 0D 0A E2 86 99 E2 86 98
Кто-нибудь может поделиться некоторый свет на то, что здесь происходит?
Редактировать: Я пишу программу, которая создает выходные данные в текстовом формате. Я наткнулся на проблему, когда несколько текстовых редакторов не отображали вывод моей программы правильно, поэтому я сначала предположил, что в моей программе что-то не так. В ее нынешнем виде его выход просто прекрасен. Так что реальный вопрос:
Есть ли способ изменить второй (сломанный) пример, чтобы он отображался правильно в вашем типичном редакторе?
Это интересно, но не по теме в StackOverflow. –
Интересно, если я вставлю строку ↑ ↓ ↙↘ в конце второй строки (которую я вижу в виде двух маленьких ящиков с вопросительным знаком внутри), то первые два символа будут восстановлены, а строка будет выглядеть следующим образом: ↙↘ ↑ ↓ ↙ ↘. –
Зависит от шрифта. С помощью, например, Courier New, коробки видны. С Consolas, коробки с вопросительными знаками. С помощью Calibri стрелки отображаются на OK. Таким образом, это, по-видимому, только ошибка рендеринга. –