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



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

2763   10  

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", так как в восточноазиатских системах это может быть кодировка с несколькими байтами на символ. Некоторые кодовые страницы могут даже использовать верхние бит-чистые байты в качестве конечных байтов в многобайтовой последовательности,поэтому он даже не совместим с простым 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 снова основано на ИСО / ИЭК 8859-1 с некоторым модификация в основном в диапазоне C1 control set в диапазоне от 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 escape-коды, используемые в DOS через ANSI.Драйвер SYS для изменения потока потокового текста.... Вероятно, не то, что вы имеете в виду, но если это см. http://en.wikipedia.org/wiki/ANSI_escape_code

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

Comments

    Ничего не найдено.