2012-04-27 17 views

Respuesta

5

System.String es documented utilizar UTF-16 internamente.

4

Es un detalle de implementación que debe no tenga que preocuparse por (a menos que dejar la Basic Multilingual Plane, en cuyo caso las cosas se complican, ya Chars represent UTF-16 code units).

Cuando se vuelve relevante, es decir, cuando la cadena se convierte en una matriz de bytes, usted tiene que elegir la codificación a utilizar:

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

Se vuelve relevante de manera anterior a eso. Intente pegar a un personaje que está fuera del BMP en una cuerda y sáquelo dirigiéndose a los caracteres de la cuerda. UTF-16 en .NET se filtra por todas partes, más particularmente porque 'System.Char' tiene 16 bits de ancho y por lo tanto no puede contener todos los caracteres (representando un código * unidad *, no un código * punto *). Esto está en contraste con Python, donde la codificación interna puede ser de varias maneras, pero se garantiza que no notará el uso de cadenas Unicode. En .NET lo notarás tan pronto como salgas de BMP. – Joey

+0

@Joey: ¿Qué es "el BMP"? – Heinzi

+0

El plano multilingüe básico. Es decir. los primeros 65536 puntos de código Unicode cuyos caracteres se pueden direccionar en una sola unidad de código UTF-16 cada uno. – Joey

Cuestiones relacionadas