У меня есть файл, который использует символы, отличные от 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» Что вы имеете в виду? Вам нужно показать свой код. Я подозреваю, что вы можете быть двойным кодированием - или у вас на самом деле есть правильные данные в файле, и вы просто смотрите на него в неправильной кодировке. Это поможет, если вы также можете указать * байты * в файле (как показано в шестнадцатеричном редакторе). –