Mys*_*rth 4 c# base64 encoding serialization decoding
我在C#中使用序列化和反序列化来实现我的项目(这是一个类).它们被序列化并保存到XML文件中.加载项目时,一切顺利.
现在我正在尝试将序列化项目编码为Base64,然后保存文件,这也很顺利.该文件的第一行(编码之前!)如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Run Code Online (Sandbox Code Playgroud)
当我解码文件时,有一个?在行前添加:
?<?xml version="1.0" encoding="utf-8"?>
<Project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
Run Code Online (Sandbox Code Playgroud)
我用来编码的代码:
byte[] toEncodeAsBytes = System.Text.ASCIIEncoding.ASCII.GetBytes(toEncode);
string returnValue = System.Convert.ToBase64String(toEncodeAsBytes);
return returnValue;
Run Code Online (Sandbox Code Playgroud)
和解码代码:
byte[] encodedDataAsBytes = System.Convert.FromBase64String(encodedData);
string returnValue = System.Text.ASCIIEncoding.ASCII.GetString(encodedDataAsBytes);
return returnValue;
Run Code Online (Sandbox Code Playgroud)
这可以是什么,我该如何解决这个问题?
该文件将自己声明为UTF-8 - 那么为什么使用ASCII将其编码为二进制?UTF-8中有许多字符无法用ASCII表示.你甚至必须以文本形式在内存中开始使用文件吗?为什么不把它作为二进制数据加载(例如File.ReadAllBytes)?
如果你确实需要从一个字符串开始,使用Encoding.UTF-8(或者Encoding.Unicode,虽然这可能会导致更大的字节数组),一切都应该没问题.额外的字符是字节顺序标记 - 不能用ASCII表示,因此"?" 替换角色.
| 归档时间: |
|
| 查看次数: |
12627 次 |
| 最近记录: |