2009-03-31 23 views

risposta

180

codifica ANSI è un termine un po 'generico utilizzato per fare riferimento alla tabella codici standard su un sistema, in genere Windows. È più correttamente indicato come Windows-1252 su Western/U.S. sistemi. (Può rappresentare altri Windows code pages su altri sistemi.) Si tratta essenzialmente di extension of the ASCII character set in quanto include tutti i caratteri ASCII con codici a 128 caratteri aggiuntivi. Questa differenza è dovuta al fatto che la codifica "ANSI" è 8 bit anziché 7 bit come ASCII (ASCII è quasi sempre codificato al giorno d'oggi come byte a 8 bit con MSB impostato su 0). Vedere l'articolo per una spiegazione del motivo per cui questa codifica viene solitamente indicata come ANSI.

Il nome "ANSI" è un termine improprio, poiché non corrisponde ad alcun effettivo standard ANSI, ma il nome è rimasto bloccato. ANSI non è la stessa di UTF-8.

+27

ANSI non è solo un termine improprio "leggero", è un nome completamente sbagliato. Questo nome implica chiaramente che qualunque cosa faccia riferimento è uno standard ANSI, che non lo è; questa è una questione di fatto in bianco e nero. Detto questo, è così ampiamente usato che siamo bloccati con esso. –

+0

Conosco ANSI come codice Pagina 437, non Codice Windows Pagina 1252. Indietro quando ANSI faceva riferimento alla grafica creata per i sistemi di bulletin board, posso praticamente garantire che sia così. – lordscarlet

+0

@lordscarlet: ANSI non li ha standardizzati, ma Windows-1252 è il più vicino possibile (almeno su Windows), poiché è un superset. Vedi http://en.wikipedia.org/wiki/ANSI_codepage#ANSI per riferimento. – Noldorin

-3

ANSI (ovvero Windows-1252/WinLatin1) è una codifica di caratteri dell'alfabeto latino, abbastanza simile a ISO-8859-1. Si consiglia di dare un'occhiata a it at Wikipedia.

+5

Non è CP1252 per tutti; questo dipende molto dalla regione. – Joey

1

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 tabelle codici ANSI per consentire un supporto limitato per altre lingue. Per dare un senso a una stringa codificata ANSI, è necessario sapere quale tabella codici usa.

10

ASCII definisce solo una pagina di codice a 7 bit con 128 simboli. ANSI estende questo a 8 bit e vi sono diverse code page diverse per i simboli da 128 a 255.

L'ANSI di denominazione non è corretto perché in realtà è la norma ISO/IEC 8859 che definisce questo code page. Vedere ISO/IEC 8859 come riferimento. Ci sono 16 codici di codice 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 dello C1 control set nell'intervallo da 128 a 159. Wikipedia afferma che Windows-1252 è anche denominato ISO-8859-1 con un secondo trattino tra ISO e 8859. (Incredibile! Chi fa qualcosa del genere?!?)

20

In senso stretto, non esiste una codifica ANSI. Il termine ANSI viene utilizzato per vari codifiche differenti:

  1. ISO 8859-1
  2. di Windows CP1252
  3. sistema attuale di codifica su una macchina Windows (nella terminologia Win32 API).
+0

1. è errato, 2 è corretto solo su "PC occidentale", 3 è corretto –

+5

@WernfriedDomscheit Tutti e tre sono errati. ANSI non standardizza alcuna codifica. Ma entrambe le tre codifiche vengono occasionalmente chiamate ANSI. Gli standard –

2

Fondamentalmente "ANSI" si riferisce alla codepage legacy su Windows. Vedi anche an article by Raymond Chen su questo argomento. I primi 127 caratteri sono identici ad ASCII nella maggior parte delle code page, tuttavia i caratteri superiori variano.

Tuttavia, ANSI non non significa automaticamente CP1252 o latino 1.

Tutto confusione nonostante si dovrebbe semplicemente evitare tali problemi al giorno d'oggi e utilizzare Unicode.

1

Ricordo quando il testo "ANSI" si riferiva ai codici di escape pseudo VT-100 utilizzabili in DOS attraverso l'ANSI.Driver SYS per alterare il flusso del testo in streaming .... Probabilmente non è quello a cui ti riferisci ma se lo vedi http://en.wikipedia.org/wiki/ANSI_escape_code

44

Tecnicamente, ANSI dovrebbe essere uguale a US-ASCII. Si riferisce allo standard ANSI X3.4, che è semplicemente la versione ratificata dell'organizzazione ASCII di ANSI. L'utilizzo dei caratteri dell'insieme superiore non è definito in ASCII/ANSI poiché è un set di caratteri a 7 bit.

Tuttavia anni di uso improprio del termine da parte del DOS e successivamente della comunità di Windows hanno lasciato il suo significato pratico come "la codepage di sistema di qualsiasi macchina venga utilizzata". La codepage del sistema è anche nota come 'mbcs', poiché sui sistemi dell'Asia orientale può essere una codifica a byte multipli per carattere. Alcune code page possono persino utilizzare i byte più chiari come byte finali in una sequenza multibyte, quindi non è nemmeno strettamente compatibile con ASCII normale ... ma anche in questo caso, è ancora chiamato "ANSI".

Nelle impostazioni predefinite degli Stati Uniti e dell'Europa occidentale, "ANSI" si associa alla tabella codici di Windows 1252. Questo non è lo stesso di ISO-8859-1 (anche se è abbastanza simile). Su altre macchine potrebbe essere qualcos'altro. Questo rende "ANSI" assolutamente inutile come un identificatore di codifica esterna.

9

Una volta Microsoft, come tutti gli altri, utilizzava set di caratteri a 7 bit, e inventavano il proprio quando li soddisfaceva, sebbene mantenessero ASCII come un sottoinsieme principale. Poi si sono resi conto che il mondo era passato alle codifiche a 8 bit e che esistevano standard internazionali, come la famiglia ISO-8859. A quei tempi, se volevi impadronirti di uno standard internazionale e vivevi negli Stati Uniti, lo hai comprato dall'American National Standards Institute, ANSI, che ha ripubblicato gli standard internazionali con il proprio marchio e numeri (perché il governo degli Stati Uniti vuole conformità agli standard americani, non agli standard internazionali). Quindi la copia di Microsoft della ISO-8859 diceva "ANSI" sulla copertina. E poiché a quei tempi Microsoft non era molto abituata agli standard, non si rendeva 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é in quegli anni non capivano gli standard) con il nome in copertina, "ANSI", e si sono fatti strada in Microsoft documentazione utente e quindi nella comunità degli utenti. Era circa 30 anni fa, ma a volte senti ancora il nome oggi.

+0

erano roba del settore, quindi i programmatori erano nuovi agli standard poiché si trattava di una nuova industria? – GameDeveloper

+1

Non era un nuovo settore quando Microsoft fu fondata. –

1

Solo nel caso il vostro PC non è un PC "occidentale" e non si sa quale pagina di codice viene utilizzato, è possibile dare un'occhiata a questa pagina: National Language Support (NLS) API Reference

Oppure si può interrogare il Registro di sistema:

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:\>