Odpowiedzi:
Kodowanie ANSI to nieco ogólny termin używany w odniesieniu do standardowej strony kodowej w systemie, zwykle Windows. W systemach zachodnich / amerykańskich jest bardziej poprawnie określany jako Windows-1252 . (Może reprezentować niektóre inne strony kodowe Windows w innych systemach.) Jest to zasadniczo rozszerzenie zestawu znaków ASCII , ponieważ obejmuje wszystkie znaki ASCII z dodatkowymi 128 znakami. Ta różnica wynika z faktu, że kodowanie „ANSI” jest 8-bitowe, a nie 7-bitowe tak jak ASCII (ASCII jest prawie zawsze kodowane obecnie jako 8-bitowe bajty z MSB ustawionym na 0). Zobacz artykuł wyjaśniający, dlaczego to kodowanie jest zwykle określane jako ANSI.
Nazwa „ANSI” jest myląca, ponieważ nie odpowiada żadnemu faktycznemu standardowi ANSI, ale nazwa utknęła. ANSI to nie to samo co UTF-8.
windows-1254
.
Technicznie ANSI powinien być taki sam jak US-ASCII. Odnosi się do normy ANSI X3.4, która jest po prostu ratyfikowaną wersją ASCII organizacji ANSI . Użycie znaków najwyższego zestawu bitów nie jest zdefiniowane w ASCII / ANSI, ponieważ jest to 7-bitowy zestaw znaków.
Jednak lata niewłaściwego używania tego terminu przez DOS, a następnie społeczność Windows pozostawiły swoje praktyczne znaczenie jako „systemowa strona kodowa dowolnego komputera, który jest używany”. Systemowa strona kodowa jest również czasami nazywana „mbcs”, ponieważ w systemach wschodnioazjatyckich może to być kodowanie wielobajtowe na znak. Niektóre strony kodowe mogą nawet wykorzystywać bajty o najwyższej wartości bitowej jako końcowe bajty w sekwencji wielobajtowej, więc nie są nawet ściśle zgodne ze zwykłym ASCII ... ale nawet wtedy nadal nazywa się to „ANSI”.
W ustawieniach domyślnych w USA i Europie Zachodniej „ANSI” odwzorowuje na stronę kodową Windows 1252. Nie jest to to samo co ISO-8859-1 (chociaż jest dość podobne). Na innych komputerach może to być cokolwiek innego. To sprawia, że „ANSI” jest całkowicie bezużyteczne jako zewnętrzny identyfikator kodowania.
Ściśle mówiąc, nie ma czegoś takiego jak kodowanie ANSI. Potocznie termin ANSI jest używany dla kilku różnych kodowań:
Dawno, dawno temu Microsoft, podobnie jak wszyscy inni, używał 7-bitowych zestawów znaków i wymyślili własne, gdy im to odpowiadało, chociaż zachowali ASCII jako podstawowy podzbiór. Potem zdali sobie sprawę, że świat przeszedł na kodowanie 8-bitowe i że istnieją międzynarodowe standardy, takie jak rodzina ISO-8859. W tamtych czasach, jeśli chciałeś zdobyć międzynarodowy standard i mieszkałeś w USA, kupiłeś go od American National Standards Institute, ANSI, który opublikował międzynarodowe standardy z własną marką i numerami (to dlatego, że rząd USA chce zgodność ze standardami amerykańskimi, a nie międzynarodowymi). Tak więc kopia ISO-8859 Microsoftu zawierała „ANSI” na okładce. A ponieważ Microsoft nie był bardzo przyzwyczajony do standardów w tamtych czasach, nie „ Zdaję sobie sprawę, że ANSI opublikowało również wiele innych standardów. Odnieśli się więc do standardów z rodziny ISO-8859 (i wariantów, które wymyślili, ponieważ tak naprawdę nie rozumieli standardów w tamtych czasach) pod nazwą na okładce „ANSI” i trafił do Microsoft dokumentacja użytkownika, a tym samym do społeczności użytkowników. To było około 30 lat temu, ale wciąż czasem słyszysz tę nazwę.
ASCII właśnie definiuje 7-bitową stronę kodową ze 128 symbolami. ANSI rozszerza to do 8 bitów i istnieje kilka różnych stron kodowych dla symboli 128 do 255.
Nazewnictwo ANSI jest niepoprawne, ponieważ w rzeczywistości jest to norma ISO / IEC 8859, która definiuje te strony kodowe. Zobacz ISO / IEC 8859 w celach informacyjnych. Istnieje 16 stron kodowych ISO / IEC 8859-1 do ISO / IEC 8859-16.
Windows-1252 jest ponownie oparty na ISO / IEC 8859-1 z pewnymi modyfikacjami głównie w zakresie zestawu kontrolnego C1 w zakresie od 128 do 159. Wikipedia stwierdza, że Windows-1252 jest również określany jako ISO-8859-1 z drugim łącznik między ISO a 8859. (Niewiarygodne! Kto coś takiego robi ?!?)
Zasadniczo „ANSI” odnosi się do starszej strony kodowej w systemie Windows. Zobacz także artykuł Raymonda Chena na ten temat:
Źródłem tego jest fakt, że strona kodowa Windows 1252 była pierwotnie oparta na szkicu ANSI, który stał się normą ISO 8859-1.
Pierwsze 127 znaków jest identycznych jak ASCII na większości stron kodowych, jednak górne znaki się różnią.
Jednak ANSI nie oznacza automatycznie CP1252 lub Latin 1.
Niezależnie od wszelkich nieporozumień powinieneś po prostu unikać takich problemów w dzisiejszych czasach i używać Unicode.
Jeśli Twój komputer nie jest komputerem typu „western” i nie wiesz, która strona kodowa jest używana, możesz przejrzeć tę stronę: Dokumentacja interfejsu API obsługi języka narodowego (NLS)
[Microsoft usunął to odniesienie, weź je z archiwum interfejsu API języka narodowego (NLS) API Reference
Lub możesz wysłać zapytanie do rejestru:
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:\>
Podczas korzystania ze znaków jednobajtowych format ASCII określa pierwsze 127 znaków. Rozszerzone znaki od 128-255 są zdefiniowane przez różne strony kodowe ANSI, aby umożliwić ograniczoną obsługę innych języków. Aby zrozumieć ciąg znaków zakodowany w ANSI, musisz wiedzieć, której strony kodowej używa.
Pamiętam, kiedy tekst „ANSI” odwoływał się do pseudo kodów ucieczki VT-100 używanych w systemie DOS za pośrednictwem sterownika ANSI.SYS w celu zmiany przepływu tekstu przesyłanego strumieniowo .... Prawdopodobnie nie to, o czym mówisz, ale jeśli jest widoczne http: //en.wikipedia.org/wiki/ANSI_escape_code
ANSI (alias Windows-1252 / WinLatin1) to kodowanie znaków alfabetu łacińskiego, dość podobne do ISO-8859-1 . Możesz zajrzeć na Wikipedię .