首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在文本框中迭代Unicode?

如何在文本框中迭代Unicode?
EN

Stack Overflow用户
提问于 2018-09-10 03:33:56
回答 1查看 235关注 0票数 0

我需要在一个标准的WinForms文本框中迭代可能的Unicode。例如,包含此单词的文件:

代码语言:javascript
运行
复制
“likable”

在十六进制查看器(如XVI32)中查看时:

但是,当这是在文本框中,并且我试图一次访问一个字节,而不是第一个字节是0xE2时,我得到0x1C。

由于textboxes支持多种编码,我也想这样做,但这似乎不起作用。

对于初学者,我想创建一个byte[]数组,将这些字节存储到该数组中,并将它们写出(然后从那里继续)。

我希望代码是编码不可知的,如果这是可能的。

我想通了。“符号是0x201C,所以这就解释了一切。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-10 05:22:05

您正在正确地访问字符串的字节,您不能忽略使用字符串进行编码。

您的示例文件是用UTF8编码的,所以是3个字节的0xE2 0x80 0x9C。您的TextBox中的字符串将是一个以UTF-16编码的System.String,因此使用作为16位字0x201C。在x86上,单词存储为little endian,因此它将作为0x1C 0x20存储在内存中。这就是你所看到的。

TextBox (或任何字符串)中的字符串中读取字节时,在.Net中将始终为UTF-16。当从磁盘读取文件(或从剪贴板复制文件)时,.Net会将UTF-8字节转换为UTF-16 System.String

如果希望以UTF-8字节的形式访问System.String的字节,请使用System.Text.Encoding.UTF8.GetBytes()

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52248015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档