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”作为单字节的编码。
答案 0 :(得分:5)
默认编码为UTF8,每个字符可包含1-4个字节的空间。
当字符串s中的任何字符使用超过1个字节时,charCount和byteCount将不相等。
要强制使用4个字节,可以使用Unicode编码进行检查,然后byteCount将= 8。
int byteCount = System.Text.Encoding.Unicode.GetBytes(s).Length;
答案 1 :(得分:1)
每当使用每个字符使用多个字节的编码时,字符数将与字节数不同。这是几种编码的情况,包括UTF-16(.NET字符串的内部表示)和UTF-32。