2012-04-27 102 views

回答

4

这是你应该需要担心的(除非你离开Basic Multilingual Plane,其中因为Chars represent UTF-16 code units情况下,事情就变得复杂)的实现细节。

当成为相关时,即当该字符串被转换为一个字节数组,你必须选择的编码的使用方法:

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

它成为比这更早的相关方式。尝试在字符串中粘贴BMP外部的字符,然后通过寻址字符串中的字符来获取它。 .NET中的UTF-16会泄漏到所有地方,特别是'System.Char'是16位宽,因此无法保存所有字符(表示代码*单元*,而不是代码*点*)。这与Python的内部编码可以是各种各样的东西相反,但你可以保证你不会注意到使用Unicode字符串。在.NET中,只要离开BMP,您就会注意到。 – Joey 2012-04-27 12:17:48

+0

@Joey:什么是“BMP”? – Heinzi 2012-04-27 13:14:16

+0

基础多语言平面。即第一个65536个Unicode代码点,每个代码单元可以用一个UTF-16代码单元寻址。 – Joey 2012-04-27 13:45:47