Miért van szükséged kódolásra?
A számítógép legkisebb tárolóegysége a bájt (bájt), és a bájttal reprezentáló karakterek száma korlátozott, 1 bájt=8 bit, egy bájt legfeljebb 255 karaktert tud képviselni, és a világon sok nyelv létezik, vannak olyan karakterek, amelyeket bájttal nem lehet megjeleníteni, így a Java karakterreprezentációs karaktere ezt a kódolási problémát megoldja, egy karakter két bájtot foglal el, így a karakter és a legkisebb egység bájt között kell kódolni. Az ellenkezője a dekódolás.
Valójában a kódolás és dekódolás a befejezett fordítási folyamat ("fordítás" könnyen érthető), és különböző kódolási módszerek szótárak.
1. ASCII kód
A teljes név az American Standard Code for Information Interchange, amely a világ leggyakoribb egybájtos kódolási rendszere, amelyet főként modern angol és más nyugat-európai nyelvek megjelenítésére használnak.
Az ASCII kód 7 bittel van képviselve, amely csak 128 karaktert tud megjeleníteni, míg 0~31 olyan vezérlő karaktereket jelöl, mint az enter, backspace, delete stb.; A 32~126 azt jelenti, hogy a nyomtatott karakterek a billentyűzeten keresztül beírhatók és megjeleníthetők.
Közülük a 48~57 0–9 tíz arab számot, a 65~90 26 nagybetűs angol betűt, a 97~122 26 kisbetűt, a többi pedig néhány írásjelet, műveleti szimbólumot stb., amelyek az ASCII szabványos táblázatra hivatkozhatnak a részletekért.
2、ISO-8859-1
Ez a kódolás az ASCII kódolás kiterjesztése, de még mindig egybájtos kódolás, és összesen csak 256 karaktert tud megjeleníteni.
Mivel az ASCII csak 128 karaktert tud megjeleníteni, a kijelző nem teljes mértékben kifejezhetőAz ISO-8859-1 kiterjeszti az ASCII kódolástAz ASCII kód tetejére a nyugat-európai nyelvek, görög, thai, arab és héber szövegszimbólumai is hozzáadódnak, és ez visszafelé kompatibilis az ASCII kódolással.
3、GB2312
A GB2312 teljes neve "Information Technology Chinese Encoding Character Set", amely egy kétbájtos kódolás, kódolási tartománya A1-F7, amelynek az A1-A9 a szimbólumterülete, összesen 682 szimbólumot; A B0-F7 a kanji terület, amely 6763 kanji tartalmaz.
A teljes név a Chinese character set for information exchange, amelyet Kína 1980-ban adott ki, és főként kínai karakterfeldolgozásra használják számítógépes rendszerekben. A GB2312 főként 6763 kínai karaktert és 682 szimbólumot tartalmaz.
A GB2312 lefedi a kínai karakterek nagy részét, de nem kezeli a különleges ritka karaktereket, mint az ókori kínaikat, így a GBK és az GB18030 kódok később jelentek meg.
4、GBK
A GBK teljes neve a "Chinese Character Internal Code Extension Specification", amely úgy tűnik, kibővíti a GB2312-t, kódolási tartománya 8140-FEFE (az XX7F eltávolítása), összesen 23940 kódbittel, ami 21003 kínai karaktert képvisel, és kódolása kompatibilis a GB2312-vel
A GBK, a kínai belső kódexexlektív specifikáció teljes neve, 1995-ben született. Főként bővíti a GB2312-t, és további kínai karaktereket ad hozzá az alapjába, amely összesen 21 003 kínai karaktert tartalmaz.
A GBK visszafelé kompatibilis a GB2312 kódolással, ami azt jelenti, hogy a GB2312-ben kódolt kínai karakterek normálisan dekódolhatók GBK-val, és nem tűnnek zavarosnak, de a GBK-val kódolt kínai karakterek nem feltétlenül a GB2312-vel dekódolhatók.
5、GB18030
GB18030 teljes neve a kínai karakter belső kódkiterjesztési specifikáció, amely a legújabb, 2000-ben megjelent és 2001-ben érvényesített belső kódkészlet, beleértve a kínai etnikai kisebbségek nyelvi karaktereit, és több mint 70 000 kínai karaktert tartalmaz.
Főként egybájtos, kétbájtos és négy bájtos karakterkódolást használ, és visszafelé kompatibilis a GB2312-vel és a GBK-val, bár országunkban kötelező szabvány, de tényleges gyártásban ritkán használják, és a leggyakrabban a GBK és a GB2312 használata.
6.UNICODE
Ahhoz, hogy a nyelvük normálisan megjeleníthető legyen a számítógépben, minden országnak és régiónak megvan a saját kódja, így senki sem ismeri egymás kódját, ha túl sok a kód, ekkor az ISO szervezet egy új kódot javasolt, UNICODE kódolást, amely globális kultúrákat, karaktereket és szimbólumokat támogat. Amikor a UNICODE-ot megfogalmazták, a számítógép kapacitása már nem jelentett problémát, így úgy tervezték, hogy két bájttal rögzítse legyen, és minden karaktert 16 bitben ábrázoltak, beleértve az angol karaktereket is, amelyek korábban csak 8 bitet foglaltak el, így helypazarlást okozna, és a UNICODE-ot hosszú ideig nem népszerűsítették és nem alkalmazták.
7、UTF-16
Az UTF-16 megjelenése az ISO egy új, szupralingvális szótár létrehozása, amelyen keresztül a világ minden nyelve képes egymást fordítani, el lehet képzelni, milyen összetett és hatalmas ez a szótár. Az UTF-16 két bájttal reprezentálja a Unicode átalakítási formátumot (két bájt 16 bit, tehát az UTF-16) egy fix hosszúságú reprezentációs módszer, vagyis bármely karakter két bájtban reprezentálható. Ez nagyon kényelmessé teszi a karakterek ábrázolását. Ugyanakkor van egy hiba is, vagyis a karakterek nagy része egy bájtban reprezentálható, de az UTF-16 két bájtot használ, ami tárolóhely-pazarlás. Van egy másik kódolási mód is, ami az UTF-8.
Az UTF-16 az UNICODE specifikus megvalósítása, a 16 16 16 bit, az UTF-16 az eredet, amely meghatározza, hogyan tárolják az UNICODE karaktereket a számítógépben, az UTF-16 pedig két bájtot használ bármely karakter ábrázolására, ami nagyon hatékonysá teszi az operatív láncot, ami fontos oka annak, hogy a Java a UTF-16-ot használja a karakterek memóriában tárolható formátumként.
Az UTF-16 alkalmas lemez és memória közötti használatra, és a karakterek és bájtok egymás közötti átalakítása egyszerűbb és hatékonyabb lesz, de hálózati átvitelre nem alkalmas, ami károsíthatja a bájtfolyamot.
8、UTF-8
Az UTF-8 változó hosszúságú technológiát használ, ahol minden kódolási régiónak eltérő kódhossza van, és különböző karaktertípusok lehetnek 1-6 bájt.
Az UTF-8 kódolási szabályai a következők:
1) Ha 1 bájt, és a legmagasabb bit 0, akkor ez 1 ASCII karakter. Látható, hogy minden ASCII kódolás már UTF-8
2) Ha 1 bájt, a 11-gyel kezdve, az egymást követő 1-es szám azt jelenti, hogy mennyi a bájt ezen a karakternek, például: 110xxxxx azt jelenti, hogy ez egy kétbájtos UTF-8 karakter első bájtja.
3) Ha 1 bájt, 10-cel kezdve, az azt jelenti, hogy nem az első bájt, előre kell várnod, hogy megkapd az aktuális karakter első bájtját.
Bár az UTF-16 nagyon hatékony, ez egyben az UNICODE legnagyobb hátránya, így minden egybájtos karakternek két bájttal kell számolnia, és a tárolóhely megduplázódik, ami nyilvánvalóan erőforrásokat fogyaszt, és nem felel meg az internet jelenlegi gyors fejlődésének. Az UTF-8 tehát egy változó hosszúságú UNICODE karakterkódolás megvalósítása, amely 1~6 fix hosszúságú bájttal képes UNICODE karaktereket kódolni.
Az UTF-8 egybájtos tárhelyet használ az ASCII karakterekhez, és ha egyetlen karakter megsérül, az nem érinti a későbbi karaktereket, így az UTF-8 ideális a hagyományos webes programokhoz, és ma az egyik legelterjedtebben használt kódolás.
Ha kínait szeretnénk ábrázolni, az UTF-8 kódolási hatékonysága nagyobb, mint a GBK, és kisebb, mint az UTF-16, így ez a legideálisabb kódolási módszer a GBK-n kívül. |