非 ASCII 文字を使用するファイルがあります。ファイル ストリームを使用してこのファイルを保存すると、最終的にファイルに含まれる文字が期待どおりになりません。
私は書きます
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 でバイトにエンコードされます。
誰かがなぜこれが起こるのか理解するのを手伝ってもらえますか?
短いバージョンのコードで結果を再現できました
Using newFile As New FileStream("C:\Users\Sed\Documents\test.txt", FileMode.Create)
Dim content As String = "België"
Dim contentByte As Byte() = New UTF32Encoding().GetBytes(content)
newFile.Write(contentByte, 0, contentByte.Length)
contentByte = New UTF8Encoding().GetBytes(content)
newFile.Write(contentByte, 0, contentByte.Length)
End Using
結果を与える
B e l g i ë België
したがって、ファイルストリームは、ファイルのコンテンツがUTF8で書き込まれている間、UTF32でエンコードされていると何らかの形で想定していると思います...
すべてを UTF32 でエンコードしても、答えは得られません。ファイルは完全にめちゃくちゃです...
なぜこれが起こるのかはまだわかりませんが、頭の中で調査する必要がある回避策があります。