Что такое формат ANSI?

Что такое формат кодировки ANSI? Это системный формат по умолчанию? Чем он отличается от ASCII?

Ответ 1

Кодирование ANSI - это несколько общий термин, используемый для обозначения стандартной кодовой страницы в системе, обычно Windows. Это более корректно называют Windows-1252 на Western/U.S. системы. (Он может представлять некоторые другие кодовые страницы Windows на других системах.) Это по существу расширение набора символов ASCII в том, что оно включает в себя все символы ASCII с дополнительными 128 кодами символов. Это различие связано с тем, что кодировка "ANSI" составляет 8 бит, а не 7 бит, поскольку ASCII (ASCII почти всегда кодируется в настоящее время как 8-разрядные байты с MSB установлен в 0). См. Статью для объяснения, почему эта кодировка обычно называется ANSI.

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

Ответ 2

Технически ANSI должен быть таким же, как US-ASCII. Он относится к стандарту ANSI X3.4, который является просто ANSI организацией, утвержденной версией ASCII. Использование символов с верхним битом не определено в ASCII/ANSI, так как это 7-битный набор символов.

Однако годы неправильного использования термина DOS и впоследствии сообщества Windows оставили свое практическое значение как "системную кодовую страницу какой бы то ни было машины". Системная кодовая страница также иногда известна как "mbcs", поскольку в системах Восточной Азии, которая может быть кодировкой с несколькими байтами на символ. Некоторые кодовые страницы могут даже использовать верхние бит-четкие байты в качестве конечных байтов в многобайтовой последовательности, поэтому он даже не является строго совместимым с простым ASCII... но даже тогда он все еще называется "ANSI".

В настройках по умолчанию в США и Западной Европе "ANSI" сопоставляется с кодовой страницей Windows 1252. Это не то же самое, что и ISO-8859-1 (хотя это довольно похоже). На других машинах это могло быть что угодно. Это делает ANSI совершенно бесполезным в качестве внешнего идентификатора кодирования.

Ответ 3

Строго говоря, нет такой вещи, как кодирование ANSI. Вкратце термин ANSI используется для нескольких разных кодировок:

  1. ISO 8859-1
  2. Windows CP1252
  3. Текущая системная кодировка на компьютере Windows (в терминологии Win32 API).

Ответ 4

ASCII определяет только 7-битную кодовую страницу со 128 символами. ANSI расширяет это до 8 бит и существует несколько разных кодовых страниц для символов с 128 по 255.

Именование ANSI неверно, поскольку на самом деле это норма ISO/IEC 8859, которая определяет эти кодовые страницы. См. ISO/IEC 8859 для справки. Существует 16 кодовых страниц ISO/IEC 8859-1 по ISO/IEC 8859-16.

Windows-1252 снова основан на ISO/IEC 8859-1 с некоторой модификацией, главным образом в диапазоне набор управления C1 в диапазоне от 128 до 159. Wikipedia заявляет, что Windows-1252 также называется ISO-8859-1 со вторым дефис между ISO и 8859. (Невероятно! Кто делает что-то подобное?!?)

Ответ 5

Когда-то Microsoft, как и все остальные, использовала 7-битные наборы символов, и они придумали свои собственные, когда они им подходят, хотя они сохранили ASCII в качестве основного подмножества. Затем они поняли, что мир перешел к 8-битным кодировкам и что существуют международные стандарты, такие как семейство ISO-8859. В те дни, если вы хотели получить международный стандарт, и вы жили в США, вы купили его у Американского национального института стандартов ANSI, который переиздал международные стандарты со своим собственным брендингом и цифрами (что, поскольку правительство США хочет соответствие американским стандартам, а не международным стандартам). Итак, копия Microsoft ISO-8859 сказала "ANSI" на обложке. И поскольку Microsoft в те дни не очень привыкла к стандартам, они не понимали, что ANSI опубликовала множество других стандартов. Поэтому они ссылались на стандарты семейства ISO-8859 (и варианты, которые они изобрели, потому что в те дни они не понимали стандартов) по названию на обложке "ANSI", и он нашел свой путь в Microsoft пользовательскую документацию и, следовательно, в сообщество пользователей. Это было около 30 лет назад, но вы все еще иногда слышите это имя сегодня.

Ответ 6

В основном "ANSI" относится к устаревшей кодовой странице в Windows. См. Также статью Раймонда Чена на эту тему. Первые 127 символов идентичны ASCII на большинстве кодовых страниц, однако верхние символы меняются.

Однако ANSI автоматически не означает CP1252 или Latin 1.

Несмотря на всю путаницу, вы должны просто избегать таких проблем в настоящее время и использовать Unicode.

Ответ 7

На всякий случай ваш ПК не является "западным" ПК, и вы не знаете, какая кодовая страница используется, вы можете посмотреть эту страницу: Справочник по API поддержки национальных языков (NLS)

[Microsoft удалила эту ссылку, отрисуйте ее в виде веб-архива Справочник по API поддержки национальных языков (NLS)

Или вы можете запросить свой реестр:

C:\>reg query HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage /f ACP

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage
    ACP    REG_SZ    1252

End of search: 1 match(es) found.

C:\>

Ответ 8

При использовании однобайтовых символов формат ASCII определяет первые 127 символов. Расширенные символы из 128-255 определяются различными кодами ANSI, чтобы обеспечить ограниченную поддержку других языков. Чтобы понять кодировку ANSI, вам нужно знать, какую кодовую страницу она использует.

Ответ 9

Я помню, когда текст ANSI ссылался на escape-коды псевдо-VT-100, используемые в DOS через драйвер ANSI.SYS, чтобы изменить поток потокового текста.... Вероятно, это не то, о чем вы говорите, но если оно см. http://en.wikipedia.org/wiki/ANSI_escape_code

Ответ 10

ANSI (aka Windows-1252/WinLatin1) является символьной кодировкой латинского алфавита, довольно похожей на ISO-8859-1. Вы можете захотеть взглянуть на в Википедии.