Perché hai bisogno di programmare?
L'unità di archiviazione più piccola nel computer è un byte (byte), e il numero di caratteri che possono essere rappresentati da un byte è limitato, 1byte=8bit, un byte può rappresentare al massimo 255 caratteri, e ci sono molte lingue nel mondo, ci sono vari caratteri che non possono essere rappresentati da un byte, quindi il carattere di rappresentazione char in Java serve a risolvere questo problema di codifica, un char occupa due byte, quindi deve essere codificato tra char e il byte unità più piccolo. Il contrario è la decodifica.
In effetti, la codifica e la decodifica sono il processo di traduzione completato ("la traduzione" è facile da comprendere), e vari metodi di codifica sono dizionari.
1. Codice ASCII
Il nome completo è American Standard Code for Information Interchange, che è il sistema di codifica a singolo byte più comune al mondo, utilizzato principalmente per mostrare l'inglese moderno e altre lingue dell'Europa occidentale.
Il codice ASCII è rappresentato da 7 bit, che possono rappresentare solo 128 caratteri, e 0~31 rappresenta caratteri di controllo come invio, backspace, cancello, ecc.; 32~126 significa che i caratteri stampati possono essere inseriti tramite la tastiera e visualizzati.
Tra queste, 48~57 corrisponde da 0 a 9 con dieci numeri arabi, 65~90 sono 26 lettere inglesi maiuscole, 97~122 sono 26 lettere inglesi minuscole, e il resto sono alcuni segni di punteggiatura, simboli di operazione, ecc., che possono consultare la tabella standard ASCII per i dettagli.
2、ISO-8859-1
Questa codifica è un'estensione della codifica ASCII, ma è comunque una codifica a singolo byte e può rappresentare solo un totale di 256 caratteri.
Poiché l'ASCII può rappresentare solo 128 caratteri, la visualizzazione non può essere espressa completamenteISO-8859-1 estende la codifica ASCIISopra il codice ASCII vengono aggiunti i corrispondenti simboli di testo delle lingue dell'Europa occidentale, greco, thailandese, arabo ed ebraico, ed è retrocompatibile con la codifica ASCII.
3、GB2312
Il nome completo di GB2312 è "Information Technology Chinese Encoding Character Set", che è una codifica a due byte con un intervallo di codifica da A1 a F7, di cui A1-A9 è l'area dei simboli, contenente un totale di 682 simboli; B0-F7 è l'area dei kanji, contenente 6763 kanji.
Il nome completo è il set di caratteri cinesi per lo scambio di informazioni, rilasciato dalla Cina nel 1980 ed è utilizzato principalmente per l'elaborazione dei caratteri cinesi nei sistemi informatici. GB2312 contiene principalmente 6763 caratteri cinesi e 682 simboli.
GB2312 copre la maggior parte dell'uso dei caratteri cinesi, ma non può gestire caratteri rari speciali come l'antico cinese, quindi codici come GBK e GB18030 apparvero successivamente.
4、GBK
Il nome completo di GBK è "Chinese Character Internal Code Extension Specification", che sembra espandere GB2312, il suo intervallo di codifica è 8140-FEFE (rimuovi XX7F), con un totale di 23940 bit di codice, che possono rappresentare 21003 caratteri cinesi, e la sua codifica è compatibile con GB2312
GBK, il nome completo della Specifica del Codice Interno Cinese, è stato formulato nel 1995. Amplia principalmente GB2312 e aggiunge più caratteri cinesi sulla sua base, che contiene un totale di 21.003 caratteri cinesi.
GBK è retrocompatibile con la codifica GB2312, il che significa che i caratteri cinesi codificati in GB2312 possono essere decodificati normalmente con GBK e non appariranno distorti, ma i caratteri cinesi codificati con GBK non sono necessariamente decodificati con GB2312.
5、GB18030
GB18030 nome completo è Chinese Character Internal Code Extension Specification, che è l'ultimo set di caratteri di codice interno rilasciato nel 2000 e applicato nel 2001, includendo i caratteri linguistici della maggior parte delle minoranze etniche in Cina, e contiene più di 70.000 caratteri cinesi.
Utilizza principalmente la codifica dei caratteri a singolo byte, doppio byte e quattro byte, ed è retrocompatibile con GB2312 e GBK, anche se è uno standard obbligatorio nel nostro paese, ma viene raramente utilizzato in produzione reale, e i più utilizzati sono GBK e GB2312.
6.UNICODE
Per permettere alla loro lingua di essere visualizzata normalmente nel computer, ogni paese e regione ha il proprio codice, quindi nessuno conosce il codice degli altri se ci sono troppi codici; in quel periodo l'organizzazione ISO propose un nuovo codice chiamato codifica UNICODE per supportare culture, caratteri e simboli globali. Quando fu formulato UNICODE, la capacità del computer non era più un problema, quindi fu progettato per essere fissato di due byte, e tutti i caratteri erano rappresentati in 16 bit, inclusi i caratteri inglesi che prima occupavano solo 8 bit, quindi ciò causava uno spreco di spazio, e UNICODE non fu promosso e applicato per molto tempo.
7、UTF-16
L'emergere dell'UTF-16 è l'ISO per creare un nuovo dizionario sovralingue, attraverso il quale tutte le lingue del mondo possano tradursi a vicenda; puoi immaginare quanto sia complesso e vasto questo dizionario. UTF-16 utilizza due byte per rappresentare il formato di conversione Unicode (due byte corrispondono a 16 bit, quindi UTF-16) è un metodo di rappresentazione a lunghezza fissa, cioè qualsiasi carattere può essere rappresentato in due byte. Questo rende molto comodo rappresentare i personaggi. Tuttavia, c'è anche un difetto, cioè una grande parte dei caratteri può essere rappresentata in un solo byte, ma UTF-16 ne utilizza due, il che rappresenta uno spreco di spazio di archiviazione. Quindi esiste un altro modo di codifica, che è UTF-8.
UTF-16 è l'implementazione specifica di UNICODE, 16 è 16 bit, UTF-16 è l'origine, definendo come i caratteri UNICODE vengono memorizzati nel computer, UTF-16 utilizza anche due byte per rappresentare qualsiasi carattere, rendendo la stringa operativa molto efficiente, ed è anche una ragione importante per cui Java utilizza UTF-16 come formato per memorizzare i caratteri in memoria.
UTF-16 è adatto all'uso tra disco e memoria, e la conversione di caratteri e byte tra loro sarà più semplice ed efficiente, ma non è adatto per la trasmissione in rete, il che potrebbe danneggiare il flusso di byte.
8、UTF-8
UTF-8 utilizza una tecnologia a lunghezza variabile in cui ogni regione di codifica ha lunghezze di codice diverse e tipi diversi di caratteri possono consistere da 1 a 6 byte.
Le regole di codifica per UTF-8 sono le seguenti:
1) Se è 1 byte e il bit più alto è 0, significa che si tratta di 1 carattere ASCII. Si può vedere che tutte le codifiche ASCII sono già UTF-8
2) Se è 1 byte, iniziando con 11, il numero di 1 consecutivi implica il numero di byte di questo carattere, ad esempio: 110xxxxx significa che è il primo byte di un carattere UTF-8 a doppio byte
3) Se è 1 byte, iniziando con 10, significa che non è il primo byte, devi guardare avanti per ottenere il primo byte del carattere corrente.
Sebbene UTF-16 sia molto efficiente, rappresenta anche il più grande svantaggio di UNICODE, poiché tutti i caratteri di singolo byte devono tenere conto di due byte, e lo spazio di archiviazione viene raddoppiato, il che ovviamente consuma risorse e non si conforma all'attuale situazione di rapido sviluppo di Internet. Quindi, con UTF-8, si tratta di un'implementazione della codifica a caratteri a lunghezza variabile di UNICODE, che può utilizzare 1~6 byte a lunghezza fissa per codificare i caratteri UNICODE.
UTF-8 utilizza una memoria a singolo byte per i caratteri ASCII e, se un singolo carattere viene corrotto, non influenzerà i caratteri successivi, quindi UTF-8 è ideale per il tradizionale sul web ed è una delle codifica più usate oggi.
Se vuoi rappresentare il cinese, l'efficienza di codifica UTF-8 è maggiore di GBK e minore di UTF-16, quindi è anche il metodo di codifica più ideale dopo GBK. |