我有一個使用非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
的字符串UTF8使用filestream.write將它們保存到文件之前編碼成字節。
有人能幫我理解爲什麼會發生這種情況嗎?
我一直體健重現結果代碼
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ë
,所以我想到的是,FILESTREAM莫名其妙假定其UTF32編碼,而文件內容正在以UTF8編寫...
使用UTF32編碼它並不能提供答案。該文件完全搞砸了然後...
仍不明白爲什麼會發生這種情況,但我有一個解決方案在我的腦海中,我需要探索。
「的字符串UTF8編碼成使用filestream.write之前字節」你是什麼意思?你需要顯示你的代碼。我懷疑你可能是雙重編碼 - 或者你確實在文件中有正確的數據,而你只是用錯誤的編碼來查看它。如果您可以在文件中提供*字節*(如十六進制編輯器中所示),這將有所幫助。 –