X.ToCharArray().Length 等于 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”显示为单字节编码。
string s = "test";
int charCount = s.ToCharArray().Length;
int byteCount = System.Text.Encoding.Default.GetBytes(s).Length;
When can (charCount != byteCount) happen? I believe in case of Unicode characters but not in general case.
.NET supports Unicode characters but is that the default(System.Text.Encoding.Default) encoding for .NET? "System.Text.Encoding.Default" shows "System.Text.SBCSCodePageEncoding" as the encoding which is single byte.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
默认编码为 UTF8,每个字符可以包含 1-4 个字节的空格。
当字符串 s 中的任何字符使用超过 1 个字节时,charCount 和 byteCount 将不相等。
要强制使用 4 个字节,您可以使用 Unicode 编码进行检查,然后 byteCount 将 = 8。
The default encoding is UTF8 which can contain 1-4 bytes of space per character.
charCount and byteCount will not be equal when any character in string s uses more than 1 byte.
To force the use of 4 bytes you can check using the Unicode encoding, then byteCount will = 8.
每当您使用每个字符使用多个字节的编码时,字符计数将与字节计数不同。多种编码都属于这种情况,包括 UTF-16(.NET 字符串的内部表示)和 UTF-32。
The character count will be different from the byte count whenever you use an encoding that uses more than one byte per character. This is the case for several encodings, including UTF-16 (the internal representation of .NET strings) and UTF-32.