ANSI до UTF-8 у Блокноті ++


25

У мене текст закодований в ANSI:

Текстовий файл ANSI

Коли я намагався перетворити його в UTF-8 (використовуючи меню «Блокнот ++» Кодування> UTF-8), я отримую кілька дивних символів:

Текстовий файл UTF-8

Я вважав, що UTF-8 - це супернабір ANSI, і у мене згодом таких проблем не виникне. Чи все-таки я можу уникнути явлення цих дивних персонажів?


Я не бачу, що дивного в останньому зображенні
phuclv

Я мав на увазі непоказних персонажів. Будь-який спосіб уникнути цього?
користувач3658425

Ви редагували питання? Я думаю, що бачу зображення перевернені
phuclv

1
Так вибачте, що я остаточно редагував після того, як хтось додав зображення, видаляючи додаток: якщо ви можете додати їх назад, це було б чудово!
користувач3658425

Відповіді:


38

UTF-8 не є діаграмою, а лише кодуванням для Unicode. Перші 128 символів такі ж, як ASCII, але відрізняються високими 128 байтами. Байт з високим набором бітів (або> = 0x80) є розширеним символом в ASCII, тоді як в UTF-8 він вказує на початковий байт багатобайтової послідовності. Це справа 0x93 або 0x94 вище. Однак у файлі я не бачу нічого дивного. Це розумні цитати або цитати з різними формами для відкриття та закриття цитат, які ви часто бачите при використанні редактора ситного тексту, такого як MS Word

Редагувати

Питання відредаговано. Я думаю, це тому, що ви вибрали неправильний інструмент. У encodeпунктах меню для зміни кодування , якщо у вас є неправильні прояви характеру. Він просто обробляє ту саму послідовність байт, яку читає з диска, як і інше кодування. Оскільки ASCII і UTF-8 різні, у вас буде неправильна послідовність байтів UTF-8 і побачите результат вище. Вам потрібно вибрати convert to UTF-8для зміни цілих вхідних байтів

кодування блокнота

Ви також плутали ANSI та ASCII. ANSI часто посилається на Windows-1252, який є набором символів, який використовується в англійській мові Windows та деяких мовах Західної Європи. Це суперсет ISO 8859-1, хоча ISO 8859-1 також може вважатися ANSI. ISO 8859-1 - це також перші 256 кодових точок Unicode, тому це підмножина Unicode, але вона не сумісна з кодуванням UTF-8. ASCII - це 7-бітний набір символів і є підмножиною ANSI, кодованим 8 бітами, але іноді його також називають ANSI, хоча не дуже коректно

https://en.wikipedia.org/wiki/ANSI_character_set

Загалом взаємозв'язок між наборами символів такий

ASCII < ISO 8859-1 < Windows-1252
        ^
        Unicode

Дякую, вибачте за те, що зіпсували шафку з кодуванням. Чи є якийсь спосіб уникнути наявності цих символів, які не відображаються, а замість цього є кілька лапок, що відображаються?
користувач3658425

@ user3658425, будь ласка, дивіться мою редагування
phuclv

1
Я також відредагував інформацію про ANSI / ASCII вище
phuclv

3
Зауважте, що загалом "UTF-8 без позначки порядку байтів" - це те, що ви хочете. Як говорили кілька інших у минулому, "UTF-8 - це єдине корисне кодування рядків".
Riking

4
@WillihamTotland utf8everywhere.org
phuclv
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.