Файл ANSI с charSet с латинским символом
Я сомневаюсь в кодировке / кодировке.
Я делаю тест. Ввод строки "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 ответа
Вы можете использовать любой набор символов и любую кодировку, чтобы создать файл и просмотреть его.
Вы просто должны быть уверены, что при просмотре используете тот же набор и кодировку, которые использовались для записи файла.
Большинство наборов символов на самом деле имеют большое перекрытие. Например, большинство наборов символов (исключая 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
Кодировка по умолчанию в Notepad++ называется "ANSI", без пояснений; это может означать windows-1252, или это может означать, что 8-битная кодировка является родной 8-битной кодировкой системы (в вашем случае это, вероятно, в любом случае windows-1252). "ANSI" - это неправильно Microsoft для своих 8-битных кодировок, одна из которых (теперь известная как windows-1252) была давно передана на утверждение в Американский национальный институт стандартов - и отклонена.
Нет проблем при вводе "Á" в кодировке windows-1252. Естественно, Notepad++ также отображает все в порядке. Как и многие другие программы.
Вам понадобится UTF-8, если вы хотите ввести "Ć", например. Многие люди используют UTF-8, даже если им сейчас не нужны символы вне windows-1252, чтобы избежать необходимости менять кодировку позже, если будут добавлены новые символы.