Відповіді:
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, який переопублікував міжнародні стандарти з власним брендом і номерами (це тому, що уряд США хоче відповідність американським стандартам, а не міжнародним стандартам). Тож копія Microsoft ISO-8859 написала "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 або латинську 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, щоб змінити потік потокового тексту .... Мабуть, не те, про що ви посилаєтесь, але якщо він буде див. Http: //en.wikipedia.org/wiki/ANSI_escape_code
ANSI (він же Windows-1252 / WinLatin1) - кодування символів латинського алфавіту, досить схоже на ISO-8859-1 . Ви можете поглянути на Вікіпедію .