Acest articol este un articol oglindă al traducerii automate, vă rugăm să faceți clic aici pentru a sări la articolul original.

Vedere: 4124|Răspunde: 1

Diferența dintre codul ASCII, ISO8859-1, Unicode, GBK și UTF-8

[Copiază linkul]
Postat pe 11.12.2022 14:01:58 | | |
De ce ai nevoie de programare?

Cea mai mică unitate de stocare din calculator este octetul (octet), iar numărul de caractere care pot fi reprezentate printr-un octet este limitat, 1byte=8 biți, un octet poate reprezenta cel mult 255 de caractere, iar există multe limbaje în lume, există diverse caractere care nu pot fi reprezentate printr-un octet, așa că caracterul de reprezentare char în Java este pentru a rezolva această problemă de codare, un char ocupă doi octeți, deci trebuie codificat între char și cel mai mic octet unitate. Opusul este decodarea.

De fapt, codificarea și decodarea reprezintă procesul de traducere finalizat ("traducerea" este ușor de înțeles), iar diverse metode de codificare sunt dicționare.

1. Cod ASCII

Numele complet este American Standard Code for Information Interchange, care este cel mai comun sistem de codare cu un singur octet din lume, folosit în principal pentru afișarea limbii engleze moderne și a altor limbi din Europa de Vest.

Codul ASCII este reprezentat de 7 biți, care pot reprezenta doar 128 de caractere, iar 0~31 reprezintă caractere de control precum enter, backspace, delete etc.; 32~126 înseamnă că caracterele tipărite pot fi introduse prin tastatură și pot fi afișate.

Dintre acestea, 48~57 reprezintă 0 până la 9 zece cifre arabe, 65~90 sunt 26 litere engleze cu majuscule, 97~122 sunt 26 de litere mici englezești, iar restul sunt câteva semne de punctuație, simboluri de operație etc., care pot face referire la tabelul standard ASCII pentru detalii.

2、ISO-8859-1

Această codificare este o extensie a codării ASCII, dar este totuși o codare pe un singur octet și poate reprezenta doar un total de 256 de caractere.

Deoarece ASCII poate reprezenta doar 128 de caractere, afișajul nu poate fi exprimat completISO-8859-1 extinde codificarea ASCIIPeste codul ASCII se adaugă simbolurile corespunzătoare de text ale limbilor din Europa de Vest, greacă, thailandeză, arabă și ebraică, fiind compatibil înapoi cu codificarea ASCII.

3、GB2312

Numele complet al GB2312 este "Set de Caractere de Codificare Chineză pentru Tehnologia Informației", care este o codare pe doi octeți cu un interval de codare de la A1 la F7, din care A1-A9 este zona simbolurilor, conținând în total 682 de simboluri; B0-F7 este zona kanji, care conține 6763 kanji.

Numele complet este setul de caractere chinezești pentru schimbul de informații, lansat de China în 1980 și folosit în principal pentru procesarea caracterelor chinezești în sistemele informatice. GB2312 conține în principal 6763 de caractere chinezești și 682 de simboluri.

GB2312 acoperă majoritatea utilizării caracterelor chinezești, dar nu poate gestiona caractere rare speciale, cum ar fi chineza antică, așa că coduri precum GBK și GB18030 au apărut ulterior.

4、GBK

Numele complet al GBK este "Chinese Character Internal Code Extension Specification", care pare să extindă GB2312, gama sa de codare este 8140-FEFE (eliminarea XX7F), cu un total de 23940 biți de cod, care pot reprezenta 21003 caractere chinezești, iar codificarea sa este compatibilă cu GB2312

GBK, denumirea completă a Specificației Codului Intern Chinez, a fost formulată în 1995. Aceasta extinde în principal GB2312 și adaugă mai multe caractere chinezești pe baza sa, care conține în total 21.003 caractere chinezești.

GBK este compatibil înapoi cu codificarea GB2312, ceea ce înseamnă că caracterele chinezești codificate în GB2312 pot fi decodate normal cu GBK și nu vor apărea distorsionate, dar caracterele chinezești codificate cu GBK nu sunt neapărat decodate cu GB2312.

5、GB18030

GB18030 nume complet este Specificația de Extindere a Codului Intern pentru Caractere Chinezești, care este cel mai recent set intern de caractere de cod lansat în 2000 și aplicat în 2001, incluzând caracterele lingvistice ale majorității minorităților etnice din China și conține peste 70.000 de caractere chinezești.

Folosește în principal codare de caractere cu un singur octet, dublu octet și patru octeți și este compatibil înapoi cu GB2312 și GBK, deși este un standard obligatoriu în țara noastră, dar este rar folosit în producția propriu-zisă, iar cele mai utilizate sunt GBK și GB2312.

6.UNICODE

Pentru ca limba lor să fie afișată normal în calculator, fiecare țară și regiune are propriul cod, astfel încât nimeni să nu cunoască codul celuilalt dacă sunt prea multe coduri; în această perioadă, organizația ISO a propus un nou cod numit codificare UNICODE pentru a susține culturile, caracterele și simbolurile globale. Când UNICODE a fost formulat, capacitatea calculatoarelor nu mai era o problemă, așa că a fost proiectat să fie fixat cu doi octeți, iar toate caracterele erau reprezentate în 16 biți, inclusiv caracterele englezești care ocupau doar 8 biți înainte, ceea ce ar fi cauzat o risipă de spațiu, iar UNICODE nu a fost promovat și aplicat pentru mult timp.

7、UTF-16

Apariția UTF-16 este ISO pentru a crea un nou dicționar supralingvistic, prin care toate limbile lumii se pot traduce reciproc, vă puteți imagina cât de complex și vast este acest dicționar. UTF-16 folosește doi octeți pentru a reprezenta formatul de conversie Unicode (doi octeți sunt 16 biți, deci UTF-16) este o metodă de reprezentare cu lungime fixă, adică orice caracter poate fi reprezentat în doi octeți. Acest lucru face foarte convenabil reprezentarea personajelor. Totuși, există și un defect, și anume că o mare parte din caractere poate fi reprezentată într-un singur octet, dar UTF-16 folosește doi octeți, ceea ce reprezintă o risipă de spațiu de stocare. Există o altă modalitate de codificare, care este UTF-8.

UTF-16 este implementarea specifică a UNICODE, 16 are 16 biți, UTF-16 este originea, definind modul în care sunt stocate caracterele UNICODE în calculator, UTF-16 folosește de asemenea doi octeți pentru a reprezenta orice caracter, ceea ce face șirul de operațiuni foarte eficient, motiv important pentru care Java folosește UTF-16 ca format pentru stocarea caracterelor în memorie.

UTF-16 este potrivit pentru utilizare între disc și memorie, iar conversia caracterelor și octeților între ei va fi mai simplă și mai eficientă, dar nu este potrivit pentru transmiterea în rețea, ceea ce poate deteriora fluxul de octeți.

8、UTF-8

UTF-8 folosește o tehnologie cu lungime variabilă, unde fiecare regiune de codare are lungimi diferite de cod, iar tipuri diferite de caractere pot consta din 1-6 octeți.

Regulile de codare pentru UTF-8 sunt următoarele:

1) Dacă este 1 octet și cel mai mare bit este 0, înseamnă că acesta este 1 caracter ASCII. Se poate observa că toate codările ASCII sunt deja UTF-8

2) Dacă este de 1 octet, începând cu 11, numărul de 1-uri consecutive implică numărul de octeți ai acestui caracter, de exemplu: 110xxxxx înseamnă că este primul octet al unui caracter UTF-8 cu dublu octet

3) Dacă este de 1 octet, începând cu 10, înseamnă că nu este primul octet, trebuie să te aștepți să obții primul octet al caracterului curent.

Deși UTF-16 este foarte eficient, este și cel mai mare dezavantaj al UNICODE, astfel încât toate caracterele cu un singur octet trebuie să țină cont de doi octeți, iar spațiul de stocare este dublat, ceea ce consumă evident resurse și nu se conformează situației actuale de dezvoltare rapidă a Internetului. Astfel, cu UTF-8, este o implementare a codării caractere cu lungime variabilă a UNICODE, care poate folosi 1~6 octeți de lungime fixă pentru a codifica caractere UNICODE.

UTF-8 folosește stocare pe un singur octet pentru caractere ASCII, iar dacă un singur caracter este corupt, acesta nu va afecta caracterele ulterioare, astfel că UTF-8 este ideal pentru cele mai tradiționale pe web și este una dintre cele mai utilizate codări în prezent.

Dacă vrei să reprezinți chineza, eficiența codării UTF-8 este mai mare decât GBK și mai mică decât UTF-16, deci este și cea mai ideală metodă de codificare în afară de GBK.




Precedent:Consum excesiv de buff de memorie/cache sub Linux
Următor:Fișierul de active "project.assets.json" nu poate fi găsit. Rulează restaurarea pachetelor NuGet...
Postat pe 30.12.2022 14:43:17 |
Am înțeles, cu utf-8
Disclaimer:
Tot software-ul, materialele de programare sau articolele publicate de Code Farmer Network sunt destinate exclusiv scopurilor de învățare și cercetare; Conținutul de mai sus nu va fi folosit în scopuri comerciale sau ilegale, altfel utilizatorii vor suporta toate consecințele. Informațiile de pe acest site provin de pe Internet, iar disputele privind drepturile de autor nu au legătură cu acest site. Trebuie să ștergi complet conținutul de mai sus de pe calculatorul tău în termen de 24 de ore de la descărcare. Dacă îți place programul, te rugăm să susții software-ul autentic, să cumperi înregistrarea și să primești servicii autentice mai bune. Dacă există vreo încălcare, vă rugăm să ne contactați prin e-mail.

Mail To:help@itsvse.com