2012-04-27 30 views

Odpowiedz

4

To szczegółów wdrażania ty powinny nie trzeba się martwić o (chyba, że ​​opuszczenie Basic Multilingual Plane, w tym przypadku robi się skomplikowana, ponieważ Chars represent UTF-16 code units).

Kiedy staje się istotne, to znaczy, gdy ciąg jest konwertowany do tablicy bajtów, trzeba wybrać kodowanie użyć:

Dim S1 As String = ... 

Dim utf8Bytes = Encoding.UTF8.GetBytes(S1) 
Dim utf16Bytes = Encoding.Unicode.GetBytes(S1) 

Dim western As New Encoding(1252) 
Dim westernBytes = western.GetBytes(S1) 
+0

Staje się istotny wcześniej. Spróbuj przykleić znak spoza BMP w ciągu znaków i wydobyć go przez adresowanie znaków z łańcucha. UTF-16 w .NET przecieka wszędzie, szczególnie w tym, że 'System.Char' ma szerokość 16 bitów i dlatego nie może zawierać wszystkich znaków (reprezentujących kod * jednostka *, a nie kod * punkt *). Jest to przeciwieństwo Pythona, w którym wewnętrzne kodowanie może być różne, ale masz gwarancję, że nie zauważysz użycia ciągów Unicode. W .NET zauważysz, jak tylko opuścisz BMP. – Joey

+0

@Joey: Co to jest "BMP"? – Heinzi

+0

Podstawowa płaszczyzna wielojęzyczna. To znaczy. pierwsze 65536 punktów kodowych Unicode, z których każdy może adresować znaki w jednej jednostce kodowej UTF-16. – Joey

Powiązane problemy