为了账号安全,请及时绑定邮箱和手机立即绑定

如何在文本框中迭代 Unicode?

如何在文本框中迭代 Unicode?

C#
凤凰求蛊 2022-01-09 16:33:16
我需要在标准 WinForms 文本框中迭代可能的 Unicode。例如,一个包含这个词的文件:“likable”在十六进制查看器(如 XVI32)中查看时:但是,当它在文本框中时,我尝试一次访问一个字节,而不是第一个字节是 0xE2,我得到 0x1C。由于文本框支持各种编码,我也想这样做,但这似乎不起作用。对于初学者,我想创建一个 byte[] 数组,将这些字节存储到该数组中并将它们写出来(然后从那里继续)。如果可能的话,我希望代码与编码无关。我想到了。" 符号是 0x201C,这说明了一切。谢谢!
查看完整描述

1 回答

?
饮歌长啸

TA贡献1951条经验 获得超3个赞

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

您的示例文件以 UTF-8 编码,因此是 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

如果要将 a 的字节System.String作为 UTF-8 字节访问,请使用System.Text.Encoding.UTF8.GetBytes().


查看完整回答
反对 回复 2022-01-09
  • 1 回答
  • 0 关注
  • 180 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信