Что такое формат кодировки ANSI? Это системный формат по умолчанию? Чем он отличается от ASCII?
Что такое формат ANSI?
Ответы (10)
Кодировка ANSI - это немного общий термин, используемый для обозначения стандартной кодовой страницы в системе, обычно Windows. Более правильное название - Windows-1252 на западном языке / США. системы. (Он может представлять некоторые другие кодовые страницы Windows в других системах.) По сути, это расширение набора символов ASCII, которое включает все символы ASCII с дополнительными 128 кодами символов. Это различие связано с тем, что кодировка «ANSI» является 8-битной, а не 7-битной, как ASCII (в настоящее время ASCII почти всегда кодируется как 8-битные байты с MSB установлен в 0). См. Статью для объяснения того, почему эта кодировка обычно называется ANSI.
Название «ANSI» является неправильным, поскольку оно не соответствует никакому действительному стандарту ANSI, но название прижилось. ANSI - это не то же самое, что UTF-8.
windows-1254
.
- person Ramazan Polat; 11.10.2019
Технически ANSI должен быть таким же, как US-ASCII. Это относится к стандарту ANSI X3.4, который представляет собой просто версию ASCII, ратифицированную организацией ANSI. Использование символов верхнего набора битов не определено в ASCII / ANSI, поскольку это 7-разрядный набор символов.
Однако годы неправильного использования этого термина сообществом DOS и впоследствии Windows оставили его практическое значение как «системная кодовая страница любой используемой машины». Системную кодовую страницу также иногда называют «mbcs», поскольку в восточноазиатских системах она может быть многобайтовой кодировкой на символ. Некоторые кодовые страницы могут даже использовать байты с очисткой верхнего бита в качестве завершающих байтов в многобайтовой последовательности, поэтому он даже не строго совместим с обычным ASCII ... но даже тогда он все еще называется «ANSI».
В настройках по умолчанию для США и Западной Европы «ANSI» соответствует кодовой странице Windows 1252. Это не то же самое, что ISO-8859-1 (хотя и очень похоже). На других машинах это могло быть что угодно. Это делает «ANSI» совершенно бесполезным в качестве внешнего идентификатора кодировки.
Строго говоря, кодировки ANSI не существует. В просторечии термин ANSI используется для нескольких различных кодировок:
- ISO 8859-1
- Окна CP1252
- Текущая системная кодировка на машине Windows (в терминологии Win32 API).
Когда-то 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 кодовых страниц от ISO / IEC 8859-1 до ISO / IEC 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.
На всякий случай, если ваш компьютер не является «западным» и вы не знаете, какая кодовая страница используется, вы можете взглянуть на эту страницу: Справочник по 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 для изменения потока потокового текста ... href = "http://en.wikipedia.org/wiki/ANSI_escape_code" rel = "nofollow noreferrer"> http://en.wikipedia.org/wiki/ANSI_escape_code
ANSI (также известный как Windows-1252 / WinLatin1) - это кодировка символов латинского алфавита, очень похожая на ISO-8859-1. Вы можете взглянуть на его в Википедии.