什么是VB.NET下的字符串的默认编码?
问题描述:
答
这是你应该不需要担心的(除非你离开Basic Multilingual Plane,其中因为Char
s 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)
它成为比这更早的相关方式。尝试在字符串中粘贴BMP外部的字符,然后通过寻址字符串中的字符来获取它。 .NET中的UTF-16会泄漏到所有地方,特别是'System.Char'是16位宽,因此无法保存所有字符(表示代码*单元*,而不是代码*点*)。这与Python的内部编码可以是各种各样的东西相反,但你可以保证你不会注意到使用Unicode字符串。在.NET中,只要离开BMP,您就会注意到。 – Joey 2012-04-27 12:17:48
@Joey:什么是“BMP”? – Heinzi 2012-04-27 13:14:16
基础多语言平面。即第一个65536个Unicode代码点,每个代码单元可以用一个UTF-16代码单元寻址。 – Joey 2012-04-27 13:45:47