转换为base64会添加返回字符

时间:2018-03-28 10:19:06

标签: c# serialization

我试图将Dictionary转换为字符串end,然后将其转换为Base64,以便将其保存到另一个字符串。

这是我的代码

public class StringBase64Helper
{
    public static string Base64Encode(string plainText)
    {
        var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
        return Convert.ToBase64String(plainTextBytes, Base64FormattingOptions.InsertLineBreaks);
    }

    public static string Base64Decode(string base64EncodedData)
    {
        var base64EncodedBytes = Convert.FromBase64String(base64EncodedData);
        return System.Text.Encoding.UTF8.GetString(base64EncodedBytes);
    }
}

我使用servicestack来序列化它

var dictionary = new Dictionary<string,object>();

dictionary.Add("VM","XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManager");

var rr =ServiceStack.Text.JsonSerializer.SerializeToString(dictionary);

var str = StringBase64Helper.Base64Encode(rr);

输出I

eyJWTSI6IlhYLlhYWFhYWFhYWC5DbGllbnQuV1BGLlZpZXdNb2RlbHMuUG9ydGZvbGlvTWFuYWdl
ciJ9

请注意,c1J9是一个新行,因为它放了&#13;&#13;  将字符串存储在主文件中时的字符。

来自Serializer的json是&#34;      {&#34; VM&#34;:&#34; XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManager&#34;}&#34;

当我解码我得到的字符串

{"VM":"XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManage

在新线之后我得到了

r"}

我做错了什么?

1 个答案:

答案 0 :(得分:7)

您指定了Base64FormattingOptions.InsertLineBreaks

如果你不想换行;不要求他们!

public static string Base64Encode(string plainText)
{
    var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText);
    return Convert.ToBase64String(plainTextBytes);
}