Condividi tramite


Tabelle codici

La maggior parte delle applicazioni scritte oggi gestisce i dati di tipo carattere principalmente come Unicode, usando la codifica UTF-16. Tuttavia, molte applicazioni legacy continuano a usare set di caratteri in base alle tabelle codici. Anche le nuove applicazioni talvolta devono lavorare con le tabelle codici, spesso per uno dei motivi seguenti:

  • Per comunicare con le applicazioni legacy.
  • Per comunicare con i server di posta e notizie meno recenti, che potrebbero non supportare sempre Unicode.
  • Per comunicare con la console di Windows per scopi legacy. La console supporta Unicode, ma alcuni strumenti dell'applicazione da riga di comando legacy potrebbero non essere supportati.

Nota

Le nuove applicazioni Windows devono usare Unicode per evitare incoerenze di tabelle codici diverse e per semplificare la localizzazione.

 

Ogni tabella codici è rappresentata da un identificatore della tabella codici, ad esempio 1252, e viene gestito dalle funzioni API Unicode e set di caratteri. Per un elenco degli identificatori della tabella codici supportati, vedere identificatori della tabella codici . Le informazioni di riferimento sulle "tabelle codici" nel Centro per sviluppatori globali di Microsoft Go offrono descrizioni complete di molte tabelle codici.

Le tabelle codici di Windows, comunemente denominate "tabelle codici ANSI", sono tabelle codici per le quali i valori non ASCII (valori maggiori di 127) rappresentano caratteri internazionali. Queste tabelle codici vengono usate in modo nativo in Windows Me e sono disponibili anche in Windows NT e versioni successive.

Nota

Originariamente, la tabella codici di Windows 1252, la tabella codici comunemente usata per l'inglese e altre lingue dell'Europa occidentale, era basata su una bozza dell'American National Standards Institute (ANSI). Tale bozza alla fine è diventata ISO 8859-1, ma la tabella codici di Windows 1252 è stata implementata prima che lo standard sia diventato finale e non è esattamente uguale a ISO 8859-1.

 

Molte funzioni API di Windows hanno versioni "A" (ANSI) e "W" (wide, Unicode). La versione "A" gestisce il testo in base alle tabelle codici di Windows, mentre la versione "W" gestisce il testo Unicode. Vedere tipi di dati Windows per stringhe e convenzioni di per prototipi di funzioni.

Le tabelle codici di Windows vengono talvolta definite anche "tabelle codici attive" o "tabelle codici attive di sistema". Un sistema operativo Windows ha sempre una tabella codici di Windows attualmente attiva. Tutte le versioni ANSI delle funzioni API usano la tabella codici attualmente attiva.

Le tabelle codici oem (Original Equipment Manufacturer) sono tabelle codici per le quali i valori non ASCII rappresentano il disegno di linee e i caratteri di punteggiatura. Queste tabelle codici sono state originariamente usate per MS-DOS e vengono ancora usate per le applicazioni console. Vengono usati anche per i nomi di file non estesi nei file system FAT12, FAT16 e FAT32, come descritto in set di caratteri usati nei nomi di file. La tabella codici OEM consueta per l'inglese è la tabella codici 437.

Per le tabelle codici di Windows e le tabelle codici OEM, i valori di codice 0x00 tramite 0x7F corrispondono al set di caratteri ASCII a 7 bit. I valori di codice 0x00 tramite 0x19 e 0x7F rappresentano sempre caratteri di controllo standardizzati e 0x20 tramite 0x7E rappresentano caratteri visualizzabili standardizzati. I caratteri rappresentati dai codici rimanenti, 0x80 tramite 0xff, variano tra i set di caratteri. Ogni set di caratteri include caratteri speciali diversi, in genere personalizzati per una lingua o un gruppo di lingue. La tabella codici di Windows 1252 e la tabella codici OEM 437 vengono in genere usate negli Stati Uniti.

Oltre alle tabelle codici Windows e OEM, le applicazioni possono usare tabelle codici non native. Ad esempio, le tabelle codici EBCDIC e Macintosh.

Due codifiche di Unicode (UTF-7 e UTF-8) vengono implementate come tabelle codici. Analogamente ad altre tabelle codici, ogni pagina è nota da un identificatore numerico e può essere gestita con molte delle stesse funzioni API Unicode e set di caratteri.

Le tabelle codici possono essere pagine di set di caratteri a byte singolo (SBCS) o pagine di set di caratteri a byte doppio (DBCS). Nelle pagine SBCS ogni byte codifica direttamente un singolo carattere, in modo che sia possibile rappresentare esattamente 256 caratteri distinti (inclusi caratteri di controllo, lettere, cifre, punteggiatura, simboli e simili). Le tabelle codici DBCS vengono usate per lingue come giapponese e cinese. In una tabella codici di questo tipo, alcuni caratteri hanno codifiche a due byte con determinati valori di byte (valori sempre maggiori di 127) che fungono da "byte iniziali". Invece di codificare i caratteri nel proprio diritto, i byte dei lead possono essere mappati a un carattere solo in combinazione con un "byte finale".

Alcuni protocolli legacy richiedono l'uso di tabelle codici SBCS e DBCS. Ogni tabella codici SBCS/DBCS supporta caratteri diversi, ma nessuna tabella codici supporta l'ampiezza completa dei caratteri forniti da Unicode. Ogni tabella codici SBCS/DBCS supporta un subset diverso, codificato in modo diverso.

Nota

I dati convertiti da una tabella codici SBCS o DBCS a un'altra sono soggetti a danneggiamento, perché lo stesso valore di dati in tabelle codici diverse può codificare un carattere diverso. I dati convertiti da Unicode a SBCS o DBCS sono soggetti a perdita di dati, perché una determinata tabella codici potrebbe non essere in grado di rappresentare ogni carattere usato in tali dati Unicode.

 

Oltre alle tabelle codici SBCS e DBCS, le applicazioni hanno a disposizione le tabelle codici del set di caratteri multibyte 52936, 54936, 51949 e 5022x, che usano un approccio simile a quello per un DBCS. Una tabella codici del set di caratteri multibyte supera tuttavia le codifiche a due byte di alcuni caratteri. UTF-7 e UTF-8 usano un approccio simile per codificare Unicode in base rispettivamente a byte a 7 bit e a 8 bit. Per altre informazioni, vedere Unicode.

Diverse funzioni Unicode e set di caratteri consentono alle applicazioni di gestire le tabelle codici. Un'applicazione può usare le funzioniGetCPInfoe GetCPInfoExper ottenere informazioni su una tabella codici. Queste informazioni includono il carattere predefinito usato quando un carattere in una stringa convertita non contiene alcuna voce corrispondente nella tabella codici.

Un'applicazione può usare le funzioniMultiByteToWideChare WideCharToMultiByte per eseguire la conversione tra stringhe basate su tabelle codici di Windows e stringhe Unicode. Anche se i nomi fanno riferimento a "MultiByte", queste funzioni funzionano altrettanto bene con le tabelle codici sbCS, DBCS e set di caratteri multibyte.

Nota

WideCharToMultiByte può perdere alcuni dati se la tabella codici fornita non può rappresentare tutti i caratteri in una stringa Unicode.

 

L'applicazione può eseguire la conversione tra tabelle codici di Windows e tabelle codici OEM usando le funzioni della libreria di runtime C standard. Tuttavia, l'uso di queste funzioni presenta un rischio di perdita di dati perché i caratteri che possono essere rappresentati da ogni tabella codici non corrispondono esattamente.

Le applicazioni possono anche chiamare la funzioneGetACP. Questa funzione recupera l'identificatore della tabella codici di Windows (ANSI) corrente.

set di caratteri