Как я могу не допустить, чтобы Notepad ++ заменял тире на китайские иероглифы?

706
76987

Я недавно начал использовать Notepad ++. Но когда я открываю txt-файл, содержащий тире em, эти тире отображаются как китайские символы.


Вот скриншот тестового файла, открытого в Блокноте:

image1


А вот скриншот того же файла, открытого в Notepad ++.

image2


Кто-нибудь может объяснить это странное поведение и объяснить, как его предотвратить?
Спасибо!

2
Я хотел бы предложить вам проверить ваши настройки кодировки. Тем не менее, даже играя с ними, я не смог воспроизвести проблему с настоящими черточками Em (Alt + 0151 в Windows). Я думаю, что это внешний (источник или системные настройки), возможно? Anaksunaman 6 лет назад 0
@Anaksunaman Мои настройки - это настройки по умолчанию. Я понятия не имею, какие "внешние" факторы могут быть на работе. Это происходит только в Notepad ++. 76987 6 лет назад 0
@ 76987 Мне удалось эмулировать проблему так же, как вы объясняли мое создание документа блокнота с помощью Alt + 0151 `—`, а затем, когда я открылся в Notepad ++, это выглядело как ваш снимок экрана. Вероятно, именно так Notepad ++ интерпретирует этот символ, но если вы перейдете к параметрам кодирования и измените его на другие (например, ANSI), вы увидите, что интерпретируемый символ изменится на что-то другое. Я думаю, что это просто, как программное обеспечение текстового редактора интерпретирует символы. Pimp Juice IT 6 лет назад 0
@ McDonald's Изменив параметр ** En̲coding> Наборы символов ** на Windows-1252, я смог отобразить тире. Однако, как только я закрою и снова открою текстовый файл, китайские иероглифы вернутся. Я попытался изменить настройки кодирования для новых документов в настройках, но это не помогло. Таким образом, решение кажется просто временным решением. 76987 6 лет назад 0
@ 76987 - Таким образом, вы можете изменить значение по умолчанию в Notepad ++, чтобы всегда использовать нужную кодировку для отображения символов, например, см. [Снимок экрана здесь] (https://i.imgur.com/ObmxsYG.png) .. . но зайдите в `Настройки` | `Предпочтения` | `Новый документ` | а затем выберите параметр в разделе * Encoding *, который соответствует вашим потребностям. В следующий раз, когда вы закроете и откроете документ, новая выбранная кодировка должна быть по умолчанию в Notepad ++. Pimp Juice IT 6 лет назад 0

1 ответ на вопрос

3
miroxlav

Я могу воспроизвести проблему.

Причина: автоопределение кодировки файла.

Ваш файл закодирован в стандартной 8-битной кодовой таблице, а именно Windows-1252 (как указано в вашем комментарии под вопросом), одной из 8-битных кодировок ANSI, которая имеет 256 возможных символов. Но похоже, что Notepad ++ интерпретирует файл, содержащий символы тире, как если бы он был в кодировке Shift-JIS . (Эту кодировку можно увидеть в строке состояния в правом нижнем углу главного окна Notepad ++ при возникновении проблемы.) Поэтому Notepad ++ интерпретирует символы со значением ASCII, превышающим 127, найденные в файле, как японские символы.

Решение: Измените кодировку вашего файла на UTF-8 (или другую подходящую кодировку).

  1. Откройте свой файл.
  2. Используя меню Кодировка> Набор символов> Западноевропейский> Windows-1252, переключитесь на правильную кодировку, где символы отображаются, как и ожидалось.
  3. Используя меню Кодировка> Преобразовать в UTF-8 . Индикатор строки состояния в правом нижнем углу теперь показывает UTF-8-BOM .
  4. Сохраните свой файл.

Может быть, вы можете возразить, что вам не нужен UTF-8, но вы не указали это ограничение в вопросе и, как правило, нет причин не использовать его. Все персонажи будут стабильными, без проблем с внешностью. Ограничением может быть обработка в старых приложениях / инструментах. Тогда вам нужно придерживаться требуемой кодировки ANSI.

Дополнительная информация:

UTF-8 полностью поддерживается блокнотом, который поставляется с Windows, поэтому у вас не возникнет проблем. Тем не менее, я рекомендую использовать файлы UTF-8 с спецификацией . UTF-8 без BOM тоже работает, но когда метка отсутствует, редакторы полагаются на автоопределение формата, и, как вы можете видеть, иногда это может пойти не так. Я видел, что некоторые старые программы жаловались на маркер спецификации как «Недопустимые символы в начале файла». а затем я преобразовал свой файл в UTF-8 без спецификации.

UnicodeСтандарт поддерживает более 256 кодовых точек: общее количество поддерживаемых номеров составляет 1114,112. Согласно Википедии, это пространство в настоящее время используется 136 755 символами, охватывающими 139 современных и исторических сценариев, а также множество наборов символов. Остальное зарезервировано для будущего использования. Как вы можете видеть, Unicode - это кодировка, охватывающая большинство широко используемых в мире символов, поэтому вам больше никогда не придется сталкиваться с проблемами кодовых страниц. Вам не нужно придерживаться UTF-8, Unicode также может быть представлен как UTF-16, UTF-32 или в нескольких более экзотических представлениях (UTF-7, UTF-1 и других) или в непереходных формах, таких как UCS- 4. Из них чаще всего поддерживается UTF-8, поэтому я рекомендую этот. Без использования символов выше кодовой точки 127 он совместим с ASCII (за исключением знака спецификации,

Если какая-либо программа требует от вас кодовую страницу, выберите кодовую страницу 65001 для UTF-8.

Если вы хотите изучить все символы Unicode, включая поиск или фильтрацию по их имени или другим свойствам или выявление неизвестных символов, используйте, например, BabelMap .