2

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


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

image1


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

image2


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

1 ответ1

3

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

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

Ваш файл закодирован в стандартной 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 (за исключением метки спецификации, которая видна в ASCII как несколько символов мусора в начале файла).

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .