【发布时间】:2011-05-11 21:01:06
【问题描述】:
我正在解析一个包含字符串的文件(我不生成该文件)。字符串前面总是有 2 个字节,告诉我后面的字符串的长度。
例如:
05 00 53 70 6F 72 74
应该是:
Sport
使用 C# BinaryReader,我使用以下方法读取字符串:
string s = new string(binaryReader.ReadChars(size));
有时会有奇怪的时髦角色似乎将流的位置推得比应有的更远。例如:
0D 00 63 6F 6F 6B 20 E2 80 94 20 62 6F 6F 6B
应该是:
cook - book
虽然它读得很好,但流最终比它应该的还要多两个字节?! (这会打乱其余的解析。)
我猜它与中间的 0xE2 有关,但我不确定为什么或如何处理它。
任何建议都非常感谢!
【问题讨论】:
-
在得到了所有很好的答案之后,我用以下方法解决了它: byte[] b = binRdr.ReadBytes(size);字符串 s = Encoding.UTF8.GetString(b);事实上,这将无休止地改进我的解析器!谢谢大家!
标签: c# string encoding character-encoding binary-data