Ta članek je zrcalni članek strojnega prevajanja, kliknite tukaj za skok na izvirni članek.

Pogled: 4124|Odgovoriti: 1

Razlika med ASCII kodo, ISO8859-1, Unicode, GBK in UTF-8

[Kopiraj povezavo]
Objavljeno na 11. 12. 2022 14:01:58 | | |
Zakaj potrebuješ programiranje?

Najmanjša pomnilniška enota v računalniku je bajt (bajt), število znakov, ki jih lahko predstavi bajt, je omejeno, 1 bajt = 8bit, bajt lahko predstavlja največ 255 znakov, na svetu je veliko jezikov, ki jih ni mogoče predstaviti z bajtom, zato je znak za predstavitev char v Javi namenjen reševanju tega problema kodiranja, en char zaseda dva bajta, zato ga je treba kodirati med char in najmanjšim enotskim bajtom. Nasprotno je dekodiranje.

Pravzaprav sta kodiranje in dekodiranje dokončan prevajalski proces ("prevajanje" je enostavno razumljivo), različne metode kodiranja pa so slovarji.

1. ASCII koda

Polno ime je American Standard Code for Information Interchange, ki je najpogostejši enobajtni kodni sistem na svetu, ki se večinoma uporablja za prikaz sodobne angleščine in drugih zahodnoevropskih jezikov.

ASCII koda je predstavljena s 7 biti, ki lahko predstavljajo le 128 znakov, in 0~31 predstavlja kontrolne znake, kot so enter, backspace, delete itd.; 32~126 pomeni, da je mogoče natisnjene znake vnesti preko tipkovnice in jih prikazati.

Med njimi je 48~57 deset arabskih številk od 0 do 9, 65~90 je 26 velikih angleških črk, 97~122 je 26 malih angleških črk, ostali pa so ločila, operacijski simboli itd., ki lahko za podrobnosti navajajo ASCII standardno tabelo.

2、ISO-8859-1

To kodiranje je razširitev ASCII kodiranja, vendar je še vedno enobajtno kodiranje in lahko predstavlja le 256 znakov.

Ker ASCII lahko predstavlja le 128 znakov, prikaz ni v celoti izrazitISO-8859-1 razširja ASCII kodiranjeNa ASCII kodo so dodani ustrezni tekstovni simboli zahodnoevropskih jezikov, grščine, tajščine, arabščine in hebrejščine, kar je združljivo z ASCII kodiranjem.

3、GB2312

Polno ime GB2312 je "Information Technology Chinese Encoding Character Set", ki je dvobajtno kodiranje z razponom kodiranja od A1 do F7, pri čemer je A1-A9 simbolno območje, ki vsebuje skupno 682 simbolov; B0-F7 je območje kanjijev, ki vsebuje 6763 kanji.

Polno ime je kitajski nabor znakov za izmenjavo informacij, ki ga je Kitajska izdala leta 1980 in se večinoma uporablja za obdelavo kitajskih znakov v računalniških sistemih. GB2312 vsebuje predvsem 6763 kitajskih znakov in 682 simbolov.

GB2312 pokriva večino uporabe kitajskih znakov, vendar ne more obravnavati posebnih redkih znakov, kot je starokitajščina, zato so se kode kot GBK in GB18030 pojavile kasneje.

4、GBK

Polno ime GBK je "Chinese Character Internal Code Extension Specification", ki je očitno razširila GB2312, njegov razpon kodiranja je 8140-FEFE (odstranite XX7F), s skupno 23940 kodnimi biti, ki lahko predstavljajo 21003 kitajskih znakov, njegovo kodiranje pa je združljivo z GB2312

GBK, polno ime kitajske notranje kodne specifikacije, je bilo oblikovano leta 1995. Glavno razširja GB2312 in dodaja več kitajskih znakov na osnovi, ki vsebuje skupno 21.003 kitajskih znakov.

GBK je združljiv nazaj z GB2312 kodiranjem, kar pomeni, da je mogoče kitajske znake, kodirane v GB2312, normalno dekodirati z GBK in ne bodo videti popačeni, medtem ko kitajski znaki, kodirani z GBK, niso nujno dekodirani z GB2312.

5、GB18030

GB18030 polno ime je Specifikacija razširitve notranje kode za kitajske znake, ki je najnovejši notranji nabor znakov, izdan leta 2000 in uveljavljen leta 2001, vključno z jezikovnimi znaki večine etničnih manjšin na Kitajskem ter vsebuje več kot 70.000 kitajskih znakov.

Uporablja predvsem enobajtno, dvobajtno in štiribajtno kodiranje znakov, poleg tega pa je združljiv za nazaj z GB2312 in GBK, čeprav je to obvezen standard v naši državi, vendar se redko uporablja v dejanski produkciji, najbolj uporabljena pa sta GBK in GB2312.

6. UNICODE

Da bi se njihov jezik normalno prikazal v računalniku, ima vsaka država in regija svojo kodo, zato nihče ne pozna kode drugega, če je kode preveč; v tem času je organizacija ISO predlagala novo kodo z imenom UNICODE kodiranje, ki podpira globalne kulture, znake in simbole. Ko je bil UNICODE formuliran, računalniška kapaciteta ni bila več problem, zato je bil zasnovan tako, da je fiksno zahteval dva bajta, vsi znaki pa so bili predstavljeni v 16 bitih, vključno z angleškimi znaki, ki so prej zasedali le 8 bitov, kar je pomenilo izgubo prostora, UNICODE pa dolgo časa ni bil promoviran in uporabljen.

7、UTF-16

Pojav UTF-16 je bil ISO za ustvarjanje novega nadjezičnega slovarja, preko katerega se lahko vsi jeziki sveta med seboj prevajajo, lahko si predstavljate, kako kompleksen in ogromen je ta slovar. UTF-16 uporablja dva bajta za predstavitev Unicode formata za pretvorbo (dva bajta sta 16-bitna, torej UTF-16) in je metoda predstavitve s fiksno dolžino, kar pomeni, da je lahko vsak znak predstavljen v dveh bajtih. To zelo priročno predstavlja like. Vendar pa obstaja tudi pomanjkljivost, in sicer, da je velik del znakov mogoče predstaviti v enem bajtu, vendar UTF-16 uporablja dva bajta, kar je izguba prostora za shranjevanje. Obstaja še en način kodiranja, in sicer UTF-8.

UTF-16 je specifična implementacija UNICODE, 16 je 16 bitov, UTF-16 je izvor, ki določa, kako so UNICODE znaki shranjeni v računalniku, UTF-16 prav tako uporablja dva bajta za predstavitev poljubnega znaka, kar naredi operacijski niz zelo učinkovit, kar je tudi pomemben razlog, zakaj Java uporablja UTF-16 kot format za shranjevanje znakov v pomnilniku.

UTF-16 je primeren za uporabo med diskom in pomnilnikom, pretvorba znakov in bajtov med seboj in med seboj pa je enostavnejša in učinkovitejša, vendar ni primeren za prenos v omrežju, kar lahko poškoduje tok bajtov.

8、UTF-8

UTF-8 uporablja tehnologijo spremenljive dolžine, kjer ima vsako območje kodiranja različno dolžino kode, različne vrste znakov pa lahko obsegajo od 1 do 6 bajtov.

Pravila kodiranja za UTF-8 so naslednja:

1) Če je dolg 1 bajt in je najvišji bit 0, to pomeni, da je to 1 ASCII znak. Vidimo lahko, da so vsi ASCII kodiranji že UTF-8

2) Če je 1 bajt, ki se začne z 11, število zaporednih 1 pomeni število bajtov tega znaka, na primer: 110xxxxx pomeni, da je prvi bajt dvobajtnega znaka UTF-8

3) Če je 1 bajt, začenši z 10, to pomeni, da ni prvi bajt, moraš počakati, da dobiš prvi bajt trenutnega znaka.

Čeprav je UTF-16 zelo učinkovit, je to tudi največja slabost UNICODE, saj morajo vsi enobajtni znaki zajemati dva bajta, poleg tega pa se prostor za shranjevanje podvoji, kar očitno porablja vire in ne ustreza trenutnemu hitremu razvoju interneta. Tako je UTF-8 implementacija kodiranja znakov z spremenljivo dolžino UNICODE, ki lahko uporablja 1~6 bajtov fiksne dolžine za kodiranje UNICODE znakov.

UTF-8 uporablja enobajtni pomnilnik za ASCII znake, in če je en sam znak poškodovan, to ne vpliva na naslednje znake, zato je UTF-8 idealen za tradicionalno spletno uporabo in je danes ena najbolj razširjenih kodiranj.

Če želite predstaviti kitajščino, je učinkovitost kodiranja UTF-8 večja od GBK in manjša od UTF-16, zato je tudi najbolj idealna metoda kodiranja poleg GBK.




Prejšnji:Prekomerna uporaba pomnilnika/predpomnilnika pod Linuxom
Naslednji:Datoteke sredstva "project.assets.json" ni mogoče najti. Zaženi NuGet paket obnovi...
Objavljeno na 30. 12. 2022 14:43:17 |
Razumem, z utf-8
Disclaimer:
Vsa programska oprema, programski materiali ali članki, ki jih izdaja Code Farmer Network, so namenjeni zgolj učnim in raziskovalnim namenom; Zgornja vsebina ne sme biti uporabljena v komercialne ali nezakonite namene, sicer uporabniki nosijo vse posledice. Informacije na tej strani prihajajo z interneta, spori glede avtorskih pravic pa nimajo nobene zveze s to stranjo. Zgornjo vsebino morate popolnoma izbrisati z računalnika v 24 urah po prenosu. Če vam je program všeč, podprite pristno programsko opremo, kupite registracijo in pridobite boljše pristne storitve. Če pride do kakršne koli kršitve, nas prosimo kontaktirajte po elektronski pošti.

Mail To:help@itsvse.com