Vb.net filestream编码不符合预期

Vb.net filestream编码不符合预期,vb.net,encoding,utf-8,filestream,non-ascii-characters,Vb.net,Encoding,Utf 8,Filestream,Non Ascii Characters,我有一个使用非ASCII字符的文件,当使用filestream保存此文件时,文件中的字符不是预期的 我写 stream BT 38.3774 710 TD /F10 12.0000 Tf (België)Tj ET endstream 在文件中结束的是 stream BT 38.3774 710 TD /F10 12.0000 Tf (België)Tj ET endstream 在使用filestream.write将字符串保存到文件中之前,字符串被UTF8编码为字节 有人能帮我理解为什

我有一个使用非ASCII字符的文件,当使用filestream保存此文件时,文件中的字符不是预期的

我写

stream
BT 38.3774 710 TD /F10 12.0000 Tf (België)Tj ET
endstream
在文件中结束的是

stream
BT 38.3774 710 TD /F10 12.0000 Tf (België)Tj ET
endstream

在使用filestream.write将字符串保存到文件中之前,字符串被UTF8编码为字节

有人能帮我理解为什么会这样吗

我已经能够在代码的简短版本中重现结果

给出结果

B   e   l   g   i   ë   België
因此,我希望filestream以某种方式假设它的UTF32编码,而文件的内容是用UTF8编写的

用UTF32编码并不能提供答案。文件完全搞砸了然后


我仍然不明白为什么会发生这种情况,但我脑子里有一个解决办法需要探索。

我已经找到了

如果您按照我的方式创建文件,它使用的编码是ANSI或encoding.Default

如此变化

Dim newObjectByte As Byte() = New UTF8Encoding(True).GetBytes(DataObject("pdfObjectString").ToString())

解决了我的代码页问题


多亏了这一点,我开始思考代码页、ANSI ASCII和所有这些东西……

“在使用filestream之前,字符串是用UTF8编码成字节的。写下“你是什么意思?”?您需要显示您的代码。我怀疑您可能是双重编码-或者您实际上在文件中获得了完全正确的数据,而您只是在错误的编码中查看它。如果您还可以在文件中提供字节(如十六进制编辑器中所示),这将有所帮助。
Dim newObjectByte As Byte() = New UTF8Encoding(True).GetBytes(DataObject("pdfObjectString").ToString())
Dim newObjectByte As Byte() = Encoding.Default.GetBytes(DataObject("pdfObjectString").ToString())