Файл ANSI с charSet с латинским символом

1516
Jeferson Tenorio

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

Я делаю тест. Ввод строки "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, чтобы это работало, но это не обязательно.

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

0

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

0
RedGrittyBrick

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

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

Большинство наборов символов на самом деле имеют большое перекрытие. Например, большинство наборов символов (исключая 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
Jukka K. Korpela

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

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

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

Похожие вопросы