Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 4124|Odpowiedź: 1

Różnice między kodem ASCII, ISO8859-1, Unicode, GBK i UTF-8

[Skopiuj link]
Opublikowano 11.12.2022 14:01:58 | | |
Dlaczego potrzebujesz kodowania?

Najmniejszą jednostką pamięci w komputerze jest bajt, a liczba znaków reprezentowanych przez bajt jest ograniczona, 1 bajt = 8bit, bajt może reprezentować maksymalnie 255 znaków, a na świecie jest wiele języków, których nie da się reprezentować bajtem, więc znak reprezentujący char w Javie służy rozwiązaniu tego problemu kodowania – jeden znak zajmuje dwa bajty, więc musi być zakodowany między char a najmniejszym bajtem jednostkowym. Przeciwieństwem jest dekodowanie.

W rzeczywistości kodowanie i dekodowanie to zakończony proces tłumaczenia ("tłumaczenie" jest łatwe do zrozumienia), a różne metody kodowania są słownikami.

1. Kod ASCII

Pełna nazwa to American Standard Code for Information Interchange, który jest najpopularniejszym na świecie systemem kodowania jednobajtowego, głównie używanym do wyświetlania współczesnego angielskiego i innych języków Europy Zachodniej.

Kod ASCII reprezentowany jest przez 7 bitów, które mogą reprezentować tylko 128 znaków, a 0~31 oznacza znaki kontrolne takie jak enter, backspace, delete itp.; 32~126 oznacza, że wydrukowane znaki można wprowadzać przez klawiaturę i wyświetlać.

Wśród nich 48~57 to 0 do 9 – dziesięć cyfr arabskich, 65~90 to 26 wielkich liter angielskich, 97~122 to 26 małych liter angielskich, a pozostałe to znaki interpunkcyjne, symbole operacyjne itp., które mogą odnosić się do tabeli standardowej ASCII dla szczegółów.

2、ISO-8859-1

To kodowanie jest rozszerzeniem kodowania ASCII, ale nadal jest kodowaniem jednobajtowym i może reprezentować łącznie tylko 256 znaków.

Ponieważ ASCII może reprezentować tylko 128 znaków, wyświetlacz nie może być w pełni wyrażonyISO-8859-1 rozszerza kodowanie ASCIINa kod ASCII dodano odpowiadające mu symbole tekstowe języków Europy Zachodniej, czyli greckiego, tajskiego, arabskiego i hebrajskiego, dzięki czemu jest on wstecznie kompatybilny z kodowaniem ASCII.

3、GB2312

Pełna nazwa GB2312 to "Information Technology Chinese Encoding Character Set", czyli dwubajtowy kodowanie o zakresie kodowania od A1 do F7, z którego A1-A9 to obszar symboliczny, zawierający łącznie 682 symbole; B0-F7 to obszar kanji, zawierający 6763 kanji.

Pełna nazwa to chiński zestaw znaków do wymiany informacji, który został wprowadzony przez Chiny w 1980 roku i jest głównie używany do przetwarzania znaków chińskich w systemach komputerowych. GB2312 zawiera głównie 6763 znaki chińskie i 682 symbole.

GB2312 obejmuje większość użycia znaków chińskich, ale nie obsługuje specjalnych, rzadkich znaków, takich jak starożytny chiński, dlatego kody takie jak GBK i GB18030 pojawiły się później.

4、GBK

Pełna nazwa GBK to "Chinese Character Internal Code Extension Specification", która wydaje się rozszerzać GB2312, zakres kodowania to 8140-FEFE (usuń XX7F), łącznie 23940 bitów kodu, które mogą reprezentować 21003 znaki chińskie, a kodowanie jest kompatybilne z GB2312

GBK, pełna nazwa Chińskiej Wewnętrznej Specyfikacji Kodu, została sformułowana w 1995 roku. Głównie rozszerza GB2312 i dodaje więcej znaków chińskich na bazie, która zawiera łącznie 21 003 znaki chińskie.

GBK jest kompatybilne wstecznie z kodowaniem GB2312, co oznacza, że znaki chińskie zakodowane w GB2312 można normalnie dekodować za pomocą GBK i nie będą wyglądać na zniekształcone, natomiast znaki chińskie zakodowane w GBK niekoniecznie są kodowane przez GB2312.

5、GB18030

GB18030 pełna nazwa to Chinese Character Internal Code Extension Specification, która jest najnowszym wewnętrznym zestawem znaków wydanym w 2000 roku i egzekwowanym w 2001 roku, obejmującym znaki językowe większości mniejszości etnicznych w Chinach, zawierającym ponad 70 000 znaków chińskich.

Głównie wykorzystuje kodowanie znaków jednobajtowych, dwubajtowych i czterobajtowych, jest kompatybilny wstecznie z GB2312 i GBK, choć jest to standard obowiązkowy w naszym kraju, jednak rzadko jest używany w rzeczywistej produkcji, a najczęściej używane są GBK i GB2312.

6. UNICODE

Aby ich język był normalnie wyświetlany w komputerze, każdy kraj i region ma własny kod, więc nikt nie zna kodu drugiego, jeśli jest ich zbyt wiele; w tym czasie organizacja ISO zaproponowała nowy kod zwany kodowaniem UNICODE, mający wspierać globalne kultury, znaki i symbole. Gdy powstał UNICODE, pojemność komputera nie stanowiła już problemu, dlatego zaprojektowano go tak, by był stały na dwa bajty, a wszystkie znaki były reprezentowane w 16 bitach, w tym angielskie, które wcześniej zajmowały tylko 8 bitów, co oznaczało marnowanie miejsca, a UNICODE nie był promowany i stosowany przez długi czas.

7. UTF-16

Pojawienie się UTF-16 to ISO – stworzenie nowego słownika nadjęzykowego, dzięki któremu wszystkie języki świata mogą się wzajemnie tłumaczyć, możesz sobie wyobrazić, jak złożony i ogromny jest ten słownik. UTF-16 używa dwóch bajtów do reprezentowania formatu konwersji Unicode (dwa bajty mają 16 bitów, więc UTF-16) jest metodą reprezentacji o stałej długości, czyli dowolny znak może być reprezentowany w dwóch bajtach. To sprawia, że bardzo wygodnie jest przedstawiać postacie. Istnieje jednak także wada, mianowicie duża część znaków może być reprezentowana w jednym bajcie, ale UTF-16 zużywa dwa bajty, co jest stratą miejsca na dysku. Jest więc inny sposób kodowania, czyli UTF-8.

UTF-16 to specyficzna implementacja UNICODE, 16 to 16 bitów, UTF-16 to początek, definiujący sposób przechowywania znaków UNICODE w komputerze, UTF-16 również używa dwóch bajtów do reprezentowania dowolnego znaku, co czyni ciąg operacji bardzo wydajnym, co jest również ważnym powodem, dla którego Java używa UTF-16 jako formatu do przechowywania znaków w pamięci.

UTF-16 nadaje się do użycia między dyskiem a pamięcią, a konwersja znaków i bajtów między sobą będzie prostsza i bardziej efektywna, ale nie nadaje się do transmisji sieciowej, co może uszkadzać strumień bajtów.

8、UTF-8

UTF-8 wykorzystuje technologię zmiennej długości, gdzie każdy obszar kodowania ma inną długość kodu, a różne typy znaków mogą mieć od 1 do 6 bajtów.

Zasady kodowania dla UTF-8 są następujące:

1) Jeśli jest to 1 bajt, a najwyższy bit to 0, oznacza to, że jest to 1 znak ASCII. Widać, że wszystkie kodowania ASCII są już UTF-8

2) Jeśli jest to bajt, zaczynając od 11, liczba kolejnych jedynek oznacza liczbę bajtów tego znaku, na przykład: 110xxxxx oznacza, że jest to pierwszy bajt znaku UTF-8 o podwójnym bajcie

3) Jeśli to 1 bajt, zaczynając od 10, oznacza to, że nie jest to pierwszy bajt, musisz czekać na pierwszy bajt bieżącego znaku.

Chociaż UTF-16 jest bardzo wydajny, jest to także największa wada UNICODE, ponieważ wszystkie znaki jednobajtowe muszą zajmować dwa bajty, a przestrzeń pamięci jest podwajana, co oczywiście pochłania zasoby i nie odpowiada obecnej sytuacji szybkiego rozwoju Internetu. Dlatego w UTF-8 jest to implementacja kodowania znaków o zmiennej długości w UNICODE, które może używać 1~6 bajtów o stałej długości do kodowania znaków UNICODE.

UTF-8 wykorzystuje jednobajtową pamięć dla znaków ASCII, a jeśli pojedynczy znak zostanie uszkodzony, nie wpłynie to na kolejne znaki, dlatego UTF-8 jest idealny dla tradycyjnych form w sieci i jest jednym z najczęściej stosowanych kodów obecnie.

Jeśli chcesz reprezentować chiński, wydajność kodowania UTF-8 jest większa niż GBK i mniejsza niż UTF-16, więc jest to także najbardziej optymalna metoda kodowania poza GBK.




Poprzedni:Nadmierne zużycie pamięci i buforu w Linuksie
Następny:Plik aktywów "project.assets.json" nie jest dostępny. Uruchom NuGet pakiet przywracaj...
Opublikowano 30.12.2022 14:43:17 |
Rozumiem, z utf-8
Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com