2009-05-14 12 views
5

Jakie są konsekwencje zmiany z UTF-8 na UTF-16 dla kodowania HTML? Chciałbym poznać twoje przemyślenia na ten temat. Czy są rzeczy, o których muszę pomyśleć przed wprowadzeniem takiej zmiany?Co może pójść nie tak podczas przełączania kodowania HTML z UTF-8 na UTF-16?

Uwaga: Zainteresowany z powodu ogromnych ilości tekstu japońskiego i chińskiego, z którym muszę sobie poradzić.

+1

Dlaczego chcesz zmienić? UTF-16 wymagałby 16 bitów dla każdego znaku, podczas gdy kodowanie UTF-8 wymagałoby tylko 16 bitów od U + 0080. Tak więc wszystkie znaki ASCII będą kodowane podobnie jak ASCII. – Gumbo

Odpowiedz

8

mogę myśleć o kilku rzeczach, które nie udać:

  1. należy określić, że jest to UTF-16 w nagłówku HTTP. W przeciwieństwie do UTF-8, UTF-16 jest kompatybilny z , nie ASCII, co oznacza, że ​​od początku wszystko musi być w UTF-16.
  2. Starsi klienci nie obsługują UTF-16. Na przykład wszystko w systemie Windows 9x. Prawdopodobnie również Mac OS9.
  3. O, zaczekaj, prawie zapomniałem: Ameryka Północna i europejskie kopie systemu Windows XP nie mają domyślnie zainstalowanych azjatyckich czcionek.
+6

re 3: Ten problem jest niezależny od tego, czy znaki są kodowane w UTF-8 czy UTF-16. – JacquesB

+0

To prawda, ale pomyślałem, że wrzucę to tak długo, jak będę wymieniał problemy. – Powerlord

+1

Oczywiście, niektóre z nich są mniej istotne teraz w 2017 roku, niż kiedy początkowo pisałem to w 2009 roku. – Powerlord

7
  • zużycie pasma może prawie dwukrotnie, przy założeniu, że większość z HTML jest ASCII
  • Klienci który błędnie zakładają UTF-8 (lub ASCII) będzie mylić

Dlaczego Kupię, aby zmienić na UTF-16?

+0

Lub zużycie pasma może prawie o połowę. – JacquesB

+1

Tak, jeśli większość kodu HTML nie jest ASCII. Oczywiście, biorąc pod uwagę, że same znaczniki HTML i nazwy atrybutów są ASCII, musiałby zawierać dobry stosunek "treści do znaczników". –

+0

Program OP wymienia duże ilości tekstu chińskiego i japońskiego, ale wskazuje na znaczniki. – JacquesB

-6

Podejrzewam, że większość przeglądarek nie wyświetla nawet Twoich stron.

2

Istnieje również kolejność bajtów, która staje się problemem w przypadku danych powyżej 8-bitowych. Pliki zakodowane w UTF zaczynają się od znaku kolejności bajtów, który jest używany do określenia porządku bajtów lub endianiczności tego pliku.

Wikipedia has a quite good explanation of this.

2

O ile mi wiadomo, wszystkie nowoczesne przeglądarki obsługują kodowanie UTF-16. Ale, jak wskazali inni, należy jawnie zadeklarować kodowanie. Nie wszystkie przeglądarki i platformy obsługują wszystkie znaki Unicode, ale myślę, że to jest bez względu na to, z jakiego kodowania korzystasz.

Jeśli jednak bandwith to poważny problem, prawdopodobnie powinieneś rozważyć gzipowanie kodu HTML. Pozwoli to zaoszczędzić znacznie więcej przepustowości niż zmiana kodowania.

2

Bardzo fajny artykuł, który tu trzymałeś. Fundamentals stwierdza: "Kiedy wymagane jest unikatowe kodowanie znaków, kodowanie znaków MUSI być UTF-8, UTF-16 lub UTF-32. US-ASCII jest kompatybilne w górę z UTF-8 (łańcuch US-ASCII jest również UTF-em -8, patrz [RFC 3629]), a UTF-8 jest zatem odpowiedni, jeśli pożądana jest kompatybilność z US-ASCII. " W praktyce kompatybilność z US-ASCII jest tak przydatna, że ​​prawie jest wymagana. W3C mądrze wyjaśnia: "W innych sytuacjach, na przykład w przypadku interfejsów API, bardziej odpowiednie mogą być UTF-16 lub UTF-32. Możliwe przyczyny wyboru jednego z nich to efektywność wewnętrznego przetwarzania i współdziałania z innymi procesami."

Powiązane problemy