609 Shares 4472 views

UTF-8 – kodowanie znaków

Unicode obsługuje praktycznie wszystkie istniejące zestawy znaków. Najlepszą formą kodowania Unicode zestaw znaków jest kodowanie UTF-8. Obsługuje kompatybilność z ASCII, odporność na zakłócenia danych, wydajności i łatwości obróbki. Ale wszystko po kolei.


forma kodowania

Komputery działają nie tylko jako numery abstrakcyjnych obiektów matematycznych, jak również kombinacje jednostek przechowywania i przetwarzania danych o stałym rozmiarze – bajt i 32-bitowych słów. Standard kodowania należy wziąć to pod uwagę przy określaniu, jak przedstawić liczbę znaków.

W systemach komputerowych, liczby całkowite przechowywane w komórkach pamięci 8 bitów (jeden bajt), 16 lub 32 bitów. Każda forma tworzy kodowanie UNICODE, która sekwencja komórki pamięci jest liczbą całkowitą odpowiadającą danym symbolu. W standardzie są trzy różne rodzaje kodowania znaków UNICODE 8, 16 i 32-bitowych bloków. W związku z tym, znane są jako UTF-8, UTF-16 i UTF-32. Nazwa UTF oznacza Unicode Transformation Format. Każda z tych trzech form środków kodujących odpowiada reprezentacji Unicode ma zalety w różnych zastosowaniach.

Szyfrowanie danych może być używany do reprezentowania wszystkich znaków w standardzie Unicode. Tak więc, są one w pełni kompatybilne z rozwiązaniami z różnych powodów, z wykorzystaniem różnych form kodowania. Każdy kodująca może być jednoznacznie przekształcić w dowolny z dwóch pozostałych bez utraty danych.

zasada nenalozheniya

Każda z form kodowania Unicode opracowany z uwagi na nie częściowo zachodzą na siebie. Na przykład, Windows-932 tworzy postacie jednego lub dwóch bajtów kodu. Długość sekwencji zależy w pierwszym bajcie, a więc czołowych wartości bajtu w szeregu dwubajtowych i jednego bajtu rozłącznych. Jednakże, wartość jednego bajtu i na końcu sekwencji bajtów mogą pokrywać się. Oznacza to na przykład, że wyszukiwanie typu D (kod 44) może znaleźć się błędnie wejściu do drugiej części sekwencji dwóch bajtów postaci „D” (kod 84 44). Aby dowiedzieć się, która to sekwencja jest poprawna, program powinien uwzględniać dotychczasowe bajtów.

Sytuacja jest skomplikowana, jeśli mecz natarcia i spływu bajtów. Oznacza to, że w celu usunięcia niejasności będą wyszukiwania wstecznego przed osiągnięciem początek tekstu lub unikalnej sekwencji kodu. Jest to nie tylko nieskuteczne, ale nie jest zabezpieczona przed ewentualnymi błędami, gdyż tylko jeden zły bajt pełnego tekstu stał się nieczytelny.

konwersji formatu Unicode pozwala uniknąć tego problemu, ponieważ wartość początku, na końcu oraz pojedynczą jednostką pamięci nie są te same informacje. To gwarantuje, że wszystkie Unicode do wyszukiwania i porównywania, nigdy nie daje błędne wyniki z powodu zbiegu różnych częściach kodu znaków. Fakt, że te formy kodowania przestrzegać zasady nenalozheniya, odróżnia je od innych wschodnioazjatyckich kodowania multi-bajtowych.

Innym aspektem nonintersection kodowania Unicode jest to, że każda postać ma jasno określoną granicę. Eliminuje to konieczność skanowania niezliczoną ilość poprzednich symboli. Funkcja ta nazywa się czasem kodowania samo taktowanie. Zakłócenie jednostek kodowych wprowadzi zakłócenia tylko jeden znak, a otaczające znaki są nienaruszone. W 8-bitowy format konwersji, jeśli punkty wskaźnik do bajta, począwszy 10xxxxxx (w kodzie binarnym), aby znaleźć początek symbolu jest wymagana dla jednego do trzech przejściach odwrotnych.

konsystencja

Konsorcjum Unicode w pełni obsługuje wszystkie 3 rodzaje kodowania. Ważne jest, by nie sprzeciwiać się UTF-8 i Unicode, ponieważ wszystkie formaty konwersji – równie ważne formy wykonaniu standard kodowania znaków Unicode.

Bajt orientacja

Do reprezentowania znaków UTF-32 będzie potrzebował 32-bitową jednostkę kodu, który zbiega się z kodem Unicode. UTF-16 – jeden do dwóch jednostek 16-bitowych. UTF-8 stosuje się 4 bajty.

kodowanie UTF-8 ma być kompatybilny z systemami ASCII oparte bajtowych zorientowanych. Większość istniejącego oprogramowania i praktyki technologii informacyjnej przez długi czas opierała się na reprezentacji znaków w sekwencji bajtów. Wiele protokołów zależy od stałości kodowania ASCII i używa albo unika specjalnych znaków sterujących. Prostym sposobem, aby dostosować się do sytuacji Unicode mogą, za pomocą 8-bitowego kodowania reprezentacji znaków Unicode, innego równoważnego znak ASCII lub znak kontrolny. W tym celu, i jest UTF-8 kodowania.

zmienna długość

UTF-8 – kodowanie o zmiennej długości, składający się z 8-bitowej jednostki pamięci, górne Bity, które wskazuje, która część tej sekwencji dla każdego indywidualnego bajtu należy. Jeden zakres wartości przydzielonych do pierwszego elementu sekwencji kodu, drugi – na następny. Dzięki temu kodowanie rozłączności.

ASCII

Kodowanie UTF-8 jest całkowicie wspierany kodów ASCII (0x00-0x7F). Oznacza to, że znaki Unicode U + 0000-U + 007F są przekształcane na jeden bajt 0x00-0x7F UTF-8, i w ten sposób staje się nie do odróżnienia od ASCII. Ponadto, aby uniknąć niejasności, wartość 0x00-0x7F nie stosować dłużej w jednym reprezentacji bajtów znaków Unicode. Do kodowania symboli neideograficheskih inne niż ASCII, stosując sekwencję dwóch bajtów. Symbole w zakresie 0800-U + U + FFFF są reprezentowane przez trzy bajtów i dodatkowe kody o ponad U + FFFF wymaga czterech bajtów.

Zakres zastosowania

Kodowanie UTF-8 zwykle pierwszeństwo w protokole HTML, i tym podobne.

XML stał się pierwszym standardzie z pełnym wsparciem dla kodowania UTF-8. organizacje normalizacyjne również polecam. Problem Pomoc w adresie URL, który różni się od znaków ASCII, został rozwiązany, gdy doszli do porozumienia w sprawie kodowania wszystkich konsorcjum W3C i IETF grupa inżynieria adresów URL wyłącznie w UTF-8.

Kompatybilność z ASCII ułatwia przejście do nowego oprogramowania. Z UTF-8 działa większość edytorów tekstowych, w tym jedit, Emacs BBEdit, Eclipse i "Notatnik" w systemie operacyjnym Windows. Żadna inna forma kodowania Unicode nie może pochwalić się takim wsparciem narzędzia.

kodowanie zaletą jest to, że składa się z sekwencji bajtów. Z UTF-8 ciąg jest łatwo pracować w C i innych języków programowania. Jest to jedyna forma kodowania, kolejność nie wymaga etykiety bajtów BOM lub deklaracja kodowania w formacie XML.

self-synchronizacja

W środowisku, w którym wykorzystuje 8-bitowe symbole do przetwarzania w porównaniu z innymi zestawami bajcie UTF-8 ma następujące zalety:

  • Pierwsza sekwencja kodu bajt zawiera informacje o jej długości. Zwiększa to efektywność poszukiwań bezpośrednich.
  • Uproszczone znalezienie początek symbolu jako bajt wyjścia jest ograniczona do stałej zakresie wartości.
  • Brak wartości przecięcia bajt.

Porównaj korzyści

Kodowanie UTF-8 jest zwarty. Ale kiedy jest stosowany do kodowania znaków wschodnio azjatyckich (chiński, japoński, koreański, chiński pisanie pomocą znaków) używane sekwencje 3-bajtowych. Ponadto kodowanie UTF-8 jest niższa niż inne rodzaje kodowania prędkość przetwarzania. Linie do sortowania binarnego daje taki sam wynik jak binarnego sortowania Unicode.

Schemat kodowania znaków

Schemat kodowania postać zawiera symbole kodowania formę i sposób jednostek kod lokalizacji jednego bajta. W celu określenia schematu kodowania średnia Unicode jest zastosowanie początkowego bom (BOM Bajt znaku zamówienie).

Gdy BOM UTF-8 funkcji zmiennej jest ograniczony wyłącznie przez odniesienie do stosowania form kodowania. Problemy określania Endian UTF-8 ma, jak rozmiar jednostki kodowania jednego bajtu. Korzystanie z BOM dla tej formy kodowania nie jest ani konieczne, ani zalecane. BOM może występować w tekście do przekształcenia innych kodowania wykorzystujących bom lub sygnaturę dla UTF-8. Jest to sekwencja 3 bajtów EF BB 16 16 BF 16.

Jak ustawić kodowanie UTF-8

HTML kodowanie UTF-8 jest zainstalowany z następującego kodu:

głowa

Meta http-equiv = "Content-Type" content = "text / html; charset = UTF-8" ˃

W PHP kodowanie UTF-8 jest ustawiony za pomocą funkcji header () na początku pliku po ustawieniu wartości błędu poziom wyjściowy:

˂? Php

error_reporting (1);

header ( „Content-Type: text / html; charset = UTF-8„);

Aby połączyć się z bazą danych MySQL kodowanie UTF-8 jest ustawiony:

˂? Php

mysql_set_charset ( 'utf-8');

Kodowanie CSS-file jest UTF-8 znaków jest określony następująco:

@charset "UTF-8";

Po zapisaniu plików wszystkich typów wybrać kodowanie UTF-8 bez BOM, inaczej strona nie będzie działać. Aby to zrobić w DreamWeave należy wybrać pozycję menu „modyfikacje – Właściwości strony – tytuł / Kodowanie” zmienić kodowanie na UTF-8. Obserwowani przez przeładowania strony, usuń zaznaczenie z „Podpis Połącz Unicode (BOM)» i zastosować zmiany. Jeśli dowolny tekst na stronie lub w bazie danych została wprowadzona inna forma kodowania, konieczne jest ponowne wprowadzenie lub ponownie zakodować. Podczas pracy z wyrażeń regularnych, należy użyć modyfikatora u.

Można również zapisać plik w kodowaniu UTF-8 w „Notatniku” systemu Windows. Po wybraniu punktu menu „Plik – Zapisz jako …”, aby zainstalować niezbędną formę kodowania i zapisać plik w formacie UTF-8.

W edytorze tekstu Notepad ++, jeśli ustawić inne niż UTF-8, poprzez menu „Konwertuj na UTF-8 bez BOM» zmienić charakter i zapisać w UTF-8.

nie ma alternatywy

W kontekście globalizacji, gdzie granice polityczne i językowe są usunięte, zestawy znaków, które mają lokalne cechy, są mało przydatne. Unicode jest pojedynczy zestaw znaków, który obsługuje wszystkie lokalizacje. UTF-8 – przykład prawidłowego wykonania Unicode, który jest:

  • Obsługuje szeroką gamę narzędzi, w tym zgodności z kodowaniem ASCII;
  • Jest on odporny na odkształcenia danych;
  • prosta i skuteczna w leczeniu;
  • jest niezależna od platformy.

Wraz z pojawieniem się debaty UTF-8, co forma kodowania lub zestaw znaków jest lepiej, staje się bez znaczenia.