X.ToCharArray()。长度EQUALS GetBytes(X).Length

string s = "test"; int charCount = s.ToCharArray().Length; int byteCount = System.Text.Encoding.Default.GetBytes(s).Length; 

什么时候可以(charCount!= byteCount)发生? 我相信Unicode字符但不是一般情况下。

.NET支持Unicode字符,但是.NET的默认(System.Text.Encoding.Default)编码是什么? “System.Text.Encoding.Default”将“System.Text.SBCSCodePageEncoding”显示为单字节编码。

默认编码为UTF8,每个字符可包含1-4个字节的空间。

当字符串s中的任何字符使用多于1个字节时,charCount和byteCount将不相等。

要强制使用4个字节,可以使用Unicode编码进行检查,然后byteCount将= 8。

 int byteCount = System.Text.Encoding.Unicode.GetBytes(s).Length; 

每当您使用每个字符使用多个字节的编码时,字符数将与字节数不同。 这是几种编码的情况,包括UTF-16(.NET字符串的内部表示)和UTF-32。