Я сомневаюсь в кодировке / кодировке.

Я делаю тест. Ввод строки "TEST Á" без кавычек в Notepad++ с кодированием в ANSI.

«Кодировки ANSI одинаковы для символов ASCII, таких как цифры 0–9 и английские буквы az и AZ» (http://www.firstobject.com/convert-ansi-file-to-unicode.htm).

К моему удивлению, notepad++ сохранил файл нормально, я могу читать его на notepad++, обычно с акцентом на Ansi Encoding.

В другом тесте я открыл этот же файл с помощью HxD (http://mh-nexus.de/en/hxd/), и мой файл тоже правильный, с латинским символом «Á» в конце файла. Смотрите гекса ниже:

54 45 53 54 20 C1 -> ТЕСТ А

Я думал, следует использовать кодировку UTF-8, чтобы это работало, но это не обязательно.

Может кто-нибудь объяснить мне, как это возможно?

2 ответа2

0

Вы можете использовать любой набор символов и любую кодировку, чтобы создать файл и просмотреть его.

Вы просто должны быть уверены, что при просмотре используете тот же набор и кодировку, которые использовались для записи файла.

Большинство наборов символов на самом деле имеют большое перекрытие. Например, большинство наборов символов (исключая EBCDIC и другие) имеют набор символов ASCII в тех же позициях (т.е. с теми же кодовыми точками), что и в ASCII. Поэтому вы могли бы написать файл в наборе символов Unicode с кодировкой UTF-8 и, если файл содержал только символы в ASCII, вы могли просматривать этот файл, используя кодировку Windows Latin-1.

Примечание. Microsoft очень небрежно относится к таким терминам, как "ANSI" и "Unicode".


Обновить:

Во-первых, вы должны обратить внимание на ответ Юкки, так как Юкка является экспертом в этой области.

Что касается вашего Á, посмотрите эту выдержку здесь

Dec Hex ASC PC  437 850 Win Lat1    Uni
192 00C0        └   └   └   À   À   À
193 00C1        ┴   ┴   ┴   Á   Á   Á
194 00C2        ┬   ┬   ┬   Â   Â   Â
195 00C3        ├   ├   ├   Ã   Ã   Ã
196 00C4        ─   ─   ─   Ä   Ä   Ä
197 00C5        ┼   ┼   ┼   Å   Å   Å

Обратите внимание, что Á находится в кодовой точке 194 (0xC1) в Windows Latin-1, в ISO 8859-1 Latin 1 и в Unicode / ISO 10646. Если вы написали Á в Windows Latin-1, вы можете просмотреть его как ISO 8859-1.

У вас будут проблемы, если вы попытаетесь прочитать его как Unicode, так как кодировки Unicode используют несколько байтов для представления этого символа,


# echo $LANG
en_US.UTF-8

# cat t
TEST Á

# hexdump -C t
00000000  54 45 53 54 20 c3 81 0a                           |TEST ...|
00000008

Обратите внимание, что Á (кодовая точка Unicode 00C1) кодируется в UTF-8 как c3 81

0

Кодировка по умолчанию в Notepad++ называется «ANSI», без пояснений; это может означать windows-1252, или это может означать, что 8-битная кодировка является родной 8-битной кодировкой системы (в вашем случае это, вероятно, windows-1252 в любом случае). «ANSI» - это неправильное название Microsoft для своих 8-битных кодировок, одна из которых (теперь известная как windows-1252) была давно передана на утверждение в Американский национальный институт стандартов - и отклонена.

Нет проблем при вводе «Á» в кодировке windows-1252. Естественно, Notepad++ также отображает все в порядке. Как и многие другие программы.

Вам понадобится UTF-8, если вы хотите ввести «Ć», например. Многие люди используют UTF-8, даже если им сейчас не нужны символы вне windows-1252, чтобы избежать необходимости менять кодировку позже, если будут добавлены новые символы.

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