用于从文件中读取字符串的编码?

Bri*_*gey 3 c# string encoding binary-data character-encoding

我正在解析包含字符串的文件(我不生成).字符串总是以2个字节开头,告诉我后面的字符串的长度.

例如:

05 00 53 70 6F 72 74
Run Code Online (Sandbox Code Playgroud)

将会:

Sport
Run Code Online (Sandbox Code Playgroud)

使用C#BinaryReader,我使用以下方法读取字符串:

string s = new string(binaryReader.ReadChars(size));
Run Code Online (Sandbox Code Playgroud)

有时会出现奇怪的时髦角色,这似乎会推动流的位置超出应有的位置.例如:

0D 00 63 6F 6F 6B 20 E2 80 94 20 62 6F 6F 6B
Run Code Online (Sandbox Code Playgroud)

应该:

cook - book
Run Code Online (Sandbox Code Playgroud)

虽然它读得很好,但流最终会比它应该延伸两个字节?!(然后会弄乱其余的解析.)

我猜它与中间的0xE2有关,但我不确定为什么或如何处理它.

任何建议都非常感谢!

Ted*_*opp 6

我的猜测是字符串是用UTF-8编码的.3字节序列E2 80 94对应于单个Unicode字符U + 2014(EM DASH).