Я могу воспроизвести проблему.
Причина: автоопределение кодировки файла.
Ваш файл закодирован в стандартной 8-битной кодовой таблице, а именно Windows-1252 (как указано в вашем комментарии под вопросом), одной из 8-битных кодировок ANSI, которая имеет 256 возможных символов. Но похоже, что Notepad++ интерпретирует файл, содержащий символы тире, как если бы он был в кодировке Shift-JIS . (Эту кодировку можно увидеть в строке состояния в правом нижнем углу главного окна Notepad++ при возникновении проблемы.) Поэтому Notepad++ интерпретирует символы со значением ASCII, превышающим 127, найденные в файле, как японские символы.
Решение: Измените кодировку вашего файла на UTF-8 (или другую подходящую кодировку).
- Откройте свой файл.
- Используя меню Кодировка> Набор символов> Западноевропейский> Windows-1252, переключитесь на правильную кодировку, где символы отображаются, как и ожидалось.
- Используя меню Кодировка> Преобразовать в UTF-8. Индикатор строки состояния в правом нижнем углу теперь показывает UTF-8-BOM.
- Сохраните свой файл.
Может быть, вы можете возразить, что вам не нужен 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.