Ответы:
Кодировка ANSI - это слегка общий термин, используемый для обозначения стандартной кодовой страницы в системе, обычно в Windows. В западных / американских системах его более правильно называть Windows-1252 . (Он может представлять некоторые другие кодовые страницы Windows в других системах.) По сути, это расширение набора символов ASCII в том смысле, что он включает все символы ASCII с дополнительными 128-значными кодами. Это различие связано с тем, что кодирование "ANSI" является 8-разрядным, а не 7-разрядным, как ASCII (в настоящее время ASCII почти всегда кодируется как 8-разрядные байты с MSB, установленным в 0). См. Статью для объяснения того, почему эту кодировку обычно называют ANSI.
Название «ANSI» является неправильным, поскольку оно не соответствует ни одному из действующих стандартов ANSI, но название застряло. ANSI - это не то же самое, что UTF-8.
windows-1254
.
Технически, 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 используется для нескольких различных кодировок:
Когда-то давно Microsoft, как и все остальные, использовала 7-битные наборы символов, и они изобрели свои собственные, когда им это было удобно, хотя они сохранили ASCII в качестве основного подмножества. Затем они поняли, что мир перешел на 8-битное кодирование и что существуют международные стандарты, такие как семейство ISO-8859. В те дни, если вы хотели овладеть международным стандартом и жили в США, вы купили его в Американском национальном институте стандартов, ANSI, который переиздал международные стандарты со своим собственным брендом и номерами (это потому, что правительство США хочет соответствие американским стандартам, а не международным стандартам). Таким образом, копия ISO-8859 от Microsoft гласила «ANSI» на обложке. И поскольку Microsoft в те дни не очень привыкла к стандартам, они не Не понимаю, что ANSI также опубликовала множество других стандартов. Таким образом, они сослались на стандарты в семействе ISO-8859 (и варианты, которые они изобрели, потому что они действительно не понимали стандарты в те дни) под названием на обложке «ANSI», и оно попало в Microsoft пользовательская документация и, следовательно, в пользовательском сообществе. Это было около 30 лет назад, но вы все еще иногда слышите это имя сегодня.
ASCII просто определяет 7-битную кодовую страницу с 128 символами. ANSI расширяет это до 8 бит, и есть несколько разных кодовых страниц для символов от 128 до 255.
Именование ANSI неверно, потому что на самом деле это норма ISO / IEC 8859, которая определяет эти кодовые страницы. Видеть ISO / IEC 8859 для справки. Имеется 16 кодовых страниц от ИСО / МЭК 8859-1 до ИСО / МЭК 8859-16.
Windows-1252 снова основана на ISO / IEC 8859-1 с некоторыми изменениями, в основном в диапазоне набора управления C1 в диапазоне от 128 до 159. Википедия утверждает, что Windows-1252 также упоминается как ISO-8859-1 со вторым дефис между ISO и 8859. (Невероятно! Кто делает что-то подобное?!?)
В основном «ANSI» относится к устаревшей кодовой странице в Windows. Смотрите также статью Раймонда Чена на эту тему:
Источником этого является тот факт, что кодовая страница Windows 1252 изначально была основана на проекте ANSI, который стал стандартом ISO 8859-1.
Первые 127 символов идентичны ASCII в большинстве кодовых страниц, однако верхние символы различаются.
Тем не менее, ANSI вовсе не означает автоматически CP1252 или Latin 1.
Несмотря на всю путаницу, вы должны просто избегать подобных проблем в настоящее время и использовать Unicode.
Если ваш компьютер не является «западным» ПК и вы не знаете, какая кодовая страница используется, вы можете взглянуть на эту страницу: Справочник по поддержке национальных языков (NLS) API
[Microsoft удалила эту ссылку, возьмите ее из веб-архива Справочник по поддержке национальных языков (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 для изменения потока потокового текста .... Вероятно, это не то, на что вы ссылаетесь, но если это видно по http: //en.wikipedia.org/wiki/ANSI_escape_code
ANSI (он же Windows-1252 / WinLatin1) - это кодировка символов латинского алфавита, довольно похожая на ISO-8859-1 . Возможно, вы захотите взглянуть на это в Википедии .