X.ToCharArray().Length 等于 GetBytes(X).Length

发布于 2024-10-29 14:12:39 字数 368 浏览 0 评论 0原文

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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

堇色安年 2024-11-05 14:12:39

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

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

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

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

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.

int byteCount = System.Text.Encoding.Unicode.GetBytes(s).Length;
吹泡泡o 2024-11-05 14:12:39

每当您使用每个字符使用多个字节的编码时,字符计数将与字节计数不同。多种编码都属于这种情况,包括 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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文