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

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

10 ответов


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

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


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

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

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


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

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

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. Википедия утверждает, что Windows-1252 также упоминается как ISO-8859-1 со вторым дефисом между ISO и 8859. (Невероятно! Кто это делает?!?)


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


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

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

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


на случай, если ваш компьютер не является" западным " ПК, и вы не знаете, какая кодовая страница используется, Вы можете посмотреть на эту страницу: ссылка 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:\>

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


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


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