c# - 将流编码为 UTF-8 而不是 ASCII 后无法读取流中的整数

标签 c# .net encoding

我在 ASCII 中遇到元音变音问题,所以我现在将我的 Stream 编码为 UTF-8,这有效,但它带来了一个问题。我通常在 ARTIST 之前读取 4 个字节以确定 ARTIST=WHOEVER 使用的长度

UTF8Encoding enc = new UTF8Encoding();
string response = enc.GetString(message, 0, bytesRead);
int posArtist = response.IndexOf("ARTIST");
BitConverter.ToInt32(message, posArtist - 4);

这对 ASCII 非常有效。

十六进制编辑器示例只是为了说明读取长度不再像使用 ASCII 那样工作

这是来自十六进制编辑器的示例屏幕截图: alt text

“ARTIST=M.A.N.D.Y. vs. Booka Shade”长度 = 21

然而,这不适用于 UTF8 编码的流。 这是一个截图: alt text

"ARTIST=Paulseq"长度 = E 但在图片中是 2E。

我在这里做错了什么?

最佳答案

你的数据是错误的 - 你实际上在应该有二进制零的数据中有字符'\0'

问题在于你如何创建这些数据,而不在于读取它

关于c# - 将流编码为 UTF-8 而不是 ASCII 后无法读取流中的整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3894104/

相关文章:

c# - 是否可以在 winforms 应用程序中定义左手组合框(即左侧的滚动条)?

c# - 我可以让一个窗口在用户松开鼠标按钮之前不调整自己的大小吗?

c# - XML 到 Excel (2007) 使用 Windows XP 和 C#.Net 的想法

c# - 如何使用 TPL 并行化文件写入?

Java Base64 解码/编码往返不会得出相同的结果

C# Word Interop Automation 2013 - 将字体颜色设置为 RGB 值

c# - 使用 WCF 服务应用程序从表单获取 POST 数据

c# - 即时生成自签名证书

encoding - 将阿拉伯语单词转换为 windows-1252

c# - 压缩文件夹后所有 zip 条目更改编码