Risposte:
La codifica ANSI è un termine leggermente generico utilizzato per fare riferimento alla tabella codici standard su un sistema, in genere Windows. È più correttamente indicato come Windows-1252 su sistemi occidentali / statunitensi. (Può rappresentare alcune altre codici di Windows su altri sistemi.) Questa è essenzialmente un'estensione del set di caratteri ASCII in quanto include tutti i caratteri ASCII con ulteriori 128 caratteri. Questa differenza è dovuta al fatto che la codifica "ANSI" è 8 bit anziché 7 bit come ASCII (ASCII è quasi sempre codificata al giorno d'oggi come byte a 8 bit con MSB impostato su 0). Vedi l'articolo per una spiegazione del perché questa codifica viene generalmente definita ANSI.
Il nome "ANSI" è un termine improprio, poiché non corrisponde a nessuno standard ANSI effettivo, ma il nome è rimasto bloccato. ANSI non è uguale a UTF-8.
windows-1254
.
Tecnicamente, ANSI dovrebbe essere uguale a US-ASCII. Si riferisce allo standard ANSI X3.4, che è semplicemente la versione ratificata di ASCII dell'organizzazione ANSI . L'uso dei caratteri del set di bit superiore non è definito in ASCII / ANSI in quanto è un set di caratteri a 7 bit.
Tuttavia anni di uso improprio del termine da parte del DOS e successivamente della comunità di Windows ha lasciato il suo significato pratico come "la tabella di codici di sistema di qualunque macchina venga utilizzata". La codepage di sistema è talvolta nota anche come "mbcs", poiché sui sistemi dell'Asia orientale può essere una codifica a più byte per carattere. Alcune code page possono persino usare byte top-bit-clear come byte finali in una sequenza multibyte, quindi non è nemmeno strettamente compatibile con il semplice ASCII ... ma anche allora, è ancora chiamato "ANSI".
Sulle impostazioni predefinite degli Stati Uniti e dell'Europa occidentale, "ANSI" si associa alla codepage di Windows 1252. Questo non è lo stesso di ISO-8859-1 (sebbene sia abbastanza simile). Su altre macchine potrebbe essere qualsiasi altra cosa. Ciò rende "ANSI" assolutamente inutile come identificatore di codifica esterno.
A rigor di termini, non esiste una codifica ANSI. Colloquialmente il termine ANSI è usato per diverse codifiche:
Una volta Microsoft, come tutti gli altri, utilizzava set di caratteri a 7 bit e ne inventava i propri quando li si adattava, sebbene mantenessero ASCII come sottoinsieme di core. Quindi si sono resi conto che il mondo era passato alle codifiche a 8 bit e che c'erano standard internazionali in circolazione, come la famiglia ISO-8859. A quei tempi, se volevi procurarti uno standard internazionale e vivevi negli Stati Uniti, l'hai acquistato dall'American National Standards Institute, ANSI, che ha ripubblicato gli standard internazionali con il proprio marchio e numeri (questo perché il governo degli Stati Uniti vuole conformità agli standard americani, non agli standard internazionali). Quindi la copia di Microsoft ISO-8859 riportava "ANSI" sulla copertina. E poiché a quei tempi Microsoft non era molto abituata agli standard, non mi rendo conto che ANSI ha pubblicato anche molti altri standard. Quindi hanno fatto riferimento agli standard della famiglia ISO-8859 (e alle varianti che hanno inventato, perché non capivano davvero gli standard in quei giorni) con il nome sulla copertina, "ANSI", e si sono fatti strada in Microsoft documentazione per l'utente e quindi nella comunità di utenti. È successo circa 30 anni fa, ma a volte ancora oggi senti il nome.
ASCII definisce solo una tabella codici a 7 bit con 128 simboli. ANSI estende questo a 8 bit e ci sono diverse pagine di codice diverse per i simboli da 128 a 255.
La denominazione ANSI non è corretta perché in realtà è la norma ISO / IEC 8859 che definisce queste pagine di codice. Vedere ISO / IEC 8859 per riferimento. Esistono 16 pagine di codici ISO / IEC 8859-1 a ISO / IEC 8859-16.
Windows-1252 è di nuovo basato su ISO / IEC 8859-1 con alcune modifiche principalmente nell'intervallo del controllo C1 impostato tra 128 e 159. Wikipedia afferma che Windows-1252 è anche chiamato ISO-8859-1 con un secondo trattino tra ISO e 8859. (Incredibile! Chi fa qualcosa del genere?!?)
Fondamentalmente "ANSI" si riferisce alla tabella codici legacy su Windows. Vedi anche un articolo di Raymond Chen su questo argomento:
La fonte di ciò deriva dal fatto che la code page di Windows 1252 era originariamente basata su una bozza ANSI, che divenne lo standard ISO 8859-1.
I primi 127 caratteri sono identici a ASCII nella maggior parte delle pagine di codice, tuttavia i caratteri superiori variano.
Tuttavia, ANSI non non significa automaticamente CP1252 o Latin 1.
Nonostante tutta la confusione, dovresti semplicemente evitare tali problemi al giorno d'oggi e utilizzare Unicode.
Nel caso in cui il tuo PC non sia un PC "occidentale" e non sai quale tabella codici venga utilizzata, puoi dare un'occhiata a questa pagina: Riferimento API National Language Support (NLS)
[Microsoft ha rimosso questo riferimento, prendilo dal riferimento API National Language Support (NLS) dell'archivio web
Oppure puoi eseguire una query sul registro:
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:\>
Quando si utilizzano caratteri a byte singolo, il formato ASCII definisce i primi 127 caratteri. I caratteri estesi da 128 a 255 sono definiti da varie code page ANSI per consentire un supporto limitato per altre lingue. Per dare un senso a una stringa codificata ANSI, è necessario sapere quale tabella codici utilizza.
Ricordo quando il testo "ANSI" si riferiva ai codici di escape pseudo VT-100 utilizzabili in DOS tramite il driver ANSI.SYS per alterare il flusso del testo in streaming .... Probabilmente non è ciò a cui ti riferisci, ma se è disponibile vedi http: //en.wikipedia.org/wiki/ANSI_escape_code
ANSI (aka Windows-1252 / WinLatin1) è una codifica dei caratteri dell'alfabeto latino, abbastanza simile a ISO-8859-1 . Potresti dare un'occhiata a Wikipedia .