C# base64 encoding/decoding with serialization of objects issue

后端 未结 3 1403
[愿得一人]
[愿得一人] 2021-01-13 22:14

I\'m using serialization and deserialization in C# for my Project (which is a Class). They are serialized and saved to an XML file. When loading the Project, all goes well.<

相关标签:
3条回答
  • 2021-01-13 23:00

    Rather than having to worry about encoding, perhaps just use XmlWriter.Create(outPath), and pass that XmlWriter to your serialization code. That will avoid this issue, and other issues (such as having to buffer very large strings for large object graphs). There is an overload that accepts an XmlWriterSettings for finer control.

    XmlWriter is accepted by most xml code.

    0 讨论(0)
  • 2021-01-13 23:10

    At a guess ? represents the Byte-Order-Marker which is a character that cannot be represented in ASCII. Why are you not using the UTF-8 encoding?

    byte[] toEncodeAsBytes = System.Text.Encoding.UTF8.GetBytes(toEncode);
    
    0 讨论(0)
  • 2021-01-13 23:15

    The file declares itself as UTF-8 - so why are you using ASCII to encode it into binary? There are many characters in UTF-8 which can't be represented in ASCII. Do you even have to have the file in text form in-memory to start with? Why not just load it as binary data to start with (e.g. File.ReadAllBytes)?

    If you do need to start with a string, use Encoding.UTF-8 (or Encoding.Unicode, although that will probably result in a bigger byte array) and everything should be fine. That extra character is a byte order mark - which can't be represented in ASCII, hence the "?" replacement character.

    0 讨论(0)
提交回复
热议问题