Hvorfor trenger du koding?
Den minste lagringsenheten i datamaskinen er byte (byte), og antallet tegn som kan representeres av en byte er begrenset, 1 byte=8 bit, en byte kan maksimalt representere 255 tegn, og det finnes mange språk i verden, det finnes ulike tegn som ikke kan representeres med en byte, så char-representasjonstegnet i Java er for å løse dette kodeproblemet, én char opptar to byte, så det må kodes mellom char og den minste enhetsbyte. Det motsatte er dekoding.
Faktisk er koding og dekoding den fullførte oversettelsesprosessen ("oversettelse" er lett å forstå), og ulike kodingsmetoder er ordbøker.
1. ASCII-kode
Det fulle navnet er American Standard Code for Information Interchange, som er verdens vanligste enkeltbyte-kodingssystem, hovedsakelig brukt til å vise moderne engelsk og andre vesteuropeiske språk.
ASCII-kode representeres av 7 biter, som kun kan representere 128 tegn, og 0~31 representerer kontrolltegn som enter, backspace, delete, osv.; 32~126 betyr at de trykte tegnene kan tastes inn via tastaturet og vises.
Blant dem er 48~57 0 til 9 ti arabiske tall, 65~90 er 26 store engelske bokstaver, 97~122 er 26 små engelske bokstaver, og resten er noen tegnsettingstegn, operasjonssymboler osv., som kan referere til ASCII-standardtabellen for detaljer.
2、ISO-8859-1
Denne kodingen er en utvidelse av ASCII-kodingen, men det er fortsatt en enkeltbyte-koding og kan kun representere totalt 256 tegn.
Siden ASCII kun kan representere 128 tegn, kan ikke visningen uttrykkes fullt utISO-8859-1 utvider ASCII-kodingOppå ASCII-koden legges tilsvarende tekstsymboler fra vesteuropeiske språk, gresk, thai, arabisk og hebraisk, og den er bakoverkompatibel med ASCII-koding.
3、GB2312
Det fulle navnet på GB2312 er "Information Technology Chinese Encoding Character Set", som er en to-byte koding med et kodingsområde A1-F7, hvor A1-A9 er symbolområdet, med totalt 682 symboler; B0-F7 er kanji-området, som inneholder 6763 kanji.
Det fulle navnet er et kinesisk tegnsett for informasjonsutveksling, som ble lansert av Kina i 1980 og hovedsakelig brukes til kinesisk tegnbehandling i datasystemer. GB2312 inneholder hovedsakelig 6763 kinesiske tegn og 682 symboler.
GB2312 dekker det meste av bruken av kinesiske tegn, men kan ikke håndtere spesielle sjeldne tegn som gammelkinesisk, så koder som GBK og GB18030 dukket opp senere.
4、GBK
Det fulle navnet på GBK er "Chinese Character Internal Code Extension Specification", som tilsynelatende utvider GB2312, dens kodeområde er 8140-FEFE (fjern XX7F), med totalt 23940 kodebiter, som kan representere 21003 kinesiske tegn, og kodingen er kompatibel med GB2312
GBK, det fulle navnet på Chinese Internal Code Specification, ble formulert i 1995. Den utvider hovedsakelig GB2312, og legger til flere kinesiske tegn, som inneholder totalt 21 003 kinesiske tegn.
GBK er bakoverkompatibel med GB2312-koding, noe som betyr at de kinesiske tegnene kodet i GB2312 kan dekodes normalt med GBK og ikke vil fremstå utydelige, men de kinesiske tegnene kodet med GBK er ikke nødvendigvis dekodet med GB2312.
5、GB18030
GB18030 fulle navn er Chinese Character Internal Code Extension Specification, som er det nyeste interne kodesettet utgitt i 2000 og håndhevet i 2001, inkludert språktegnene til de fleste etniske minoriteter i Kina, og inneholder mer enn 70 000 kinesiske tegn.
Den bruker hovedsakelig enkeltbyte, dobbeltbyte og fire-byte tegnkoding, og er bakoverkompatibel med GB2312 og GBK, selv om det er en obligatorisk standard i vårt land, men den brukes sjelden i faktisk produksjon, og de mest brukte er GBK og GB2312.
6.UNICODE
For at språket deres skal vises normalt i datamaskinen, har hvert land og region sin egen kode, slik at ingen kjenner hverandres kode hvis det er for mange koder, foreslo ISO-organisasjonen på dette tidspunktet en ny kode kalt UNICODE-koding for å støtte globale kulturer, tegn og symboler. Da UNICODE ble formulert, var ikke datamaskinens kapasitet lenger et problem, så det ble designet for å være fast to bytes, og alle tegn ble representert i 16 biter, inkludert engelske tegn som tidligere bare tok opp 8 biter, noe som ville føre til sløsing med plass, og UNICODE ble ikke promotert og brukt på lenge.
7、UTF-16
Fremveksten av UTF-16 er ISO for å skape en ny supralingual ordbok, gjennom hvilken alle språk i verden kan oversette hverandre, du kan forestille deg hvor kompleks og enorm denne ordboken er. UTF-16 bruker to bytes for å representere Unicode-konverteringsformatet (to bytes er 16 biter, så UTF-16) er en fast lengde representasjonsmetode, det vil si at ethvert tegn kan representeres i to byte. Dette gjør det veldig praktisk å representere karakterer. Det finnes imidlertid også en svakhet, det vil si at en stor del av tegnene kan representeres i én byte, men UTF-16 bruker to byte, noe som er sløsing med lagringsplass. Så det finnes en annen måte å kode på, nemlig UTF-8.
UTF-16 er den spesifikke implementeringen av UNICODE, 16 er 16 biter, UTF-16 er origo, som definerer hvordan UNICODE-tegn lagres i datamaskinen, UTF-16 bruker også to bytes for å representere ethvert tegn, noe som gjør operasjonsstrengen svært effektiv, noe som også er en viktig grunn til at Java bruker UTF-16 som et format for tegn å lagre i minnet.
UTF-16 egner seg for bruk mellom disk og minne, og konvertering av tegn og bytes til og fra hverandre vil være enklere og mer effektiv, men den egner seg ikke for nettverksoverføring, som kan skade bytestrømmen.
8、UTF-8
UTF-8 bruker en teknologi med variabel lengde der hver kodingsregion har ulike kodelengder, og ulike typer tegn kan bestå av 1–6 byte.
Kodingsreglene for UTF-8 er som følger:
1) Hvis det er 1 byte og den høyeste biten er 0, betyr det at dette er 1 ASCII-tegn. Det kan sees at alle ASCII-kodinger allerede er UTF-8
2) Hvis det er 1 byte, som starter med 11, innebærer antallet påfølgende 1-ere antall byte av dette tegnet, for eksempel: 110xxxxx betyr at det er første byte av et dobbeltbyte UTF-8-tegn
3) Hvis det er 1 byte, som starter med 10, betyr det at det ikke er første byte, du må se fremover for å få den første byten av det nåværende tegnet.
Selv om UTF-16 er svært effektivt, er det også den største ulempen med UNICODE, slik at alle enkeltbyte-tegn må ta hensyn til to byte, og lagringsplassen dobles, noe som åpenbart bruker ressurser og ikke samsvarer med dagens raske utvikling av Internett. Så med UTF-8 er det en implementering av variabel tegnkoding av UNICODE, som kan bruke 1~6 byte med fast lengde for å kode UNICODE-tegn.
UTF-8 bruker enkeltbytelagring for ASCII-tegn, og hvis ett enkelt tegn blir ødelagt, vil det ikke påvirke påfølgende tegn, så UTF-8 er ideelt for tradisjonell nettbasert bruk og er en av de mest brukte kodingene i dag.
Hvis du vil representere kinesisk, er UTF-8-kodingseffektiviteten større enn GBK og mindre enn UTF-16, så det er også den mest ideelle kodingsmetoden i tillegg til GBK. |