C# 转换为base64会添加一个返回字符

C# 转换为base64会添加一个返回字符,c#,serialization,C#,Serialization,我正在尝试将字典转换为字符串结尾,然后将其Base64,以便将其保存为另一个字符串 这是我的密码 public class StringBase64Helper { public static string Base64Encode(string plainText) { var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(plainText); return Convert.ToBase

我正在尝试将字典转换为字符串结尾,然后将其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);
注意,c1J9是一个新行,因为它是put 在我的主文件中存储字符串时的字符

序列化程序中的json为“ {“VM”:“XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManager”}

当我解码我得到的字符串时

{"VM":"XX.XXXXXXXXX.Client.WPF.ViewModels.PortfolioManage
在新的线路之后,我得到了

r"}

我做错了什么?

您指定了
base64格式选项。InsertLineBreaks

如果你不想换行;不要问他们

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

您指定了
base64格式选项。InsertLineBreaks

如果你不想换行;不要问他们

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

注意:获取文本,将其转换为utf-8,然后使用base-64再次获取文本有点奇怪;这是某种“我的传输不支持unicode”的问题吗?您应该使用unicode IMO。另外,当您知道它是
byte[]
(个人最讨厌的)时,为什么要使用
var
(个人最讨厌的代码)呢:var base64EncodedBytes=Convert.FromBase64String(base64EncodedData.Replace(“\n”,”);关于你的问题,你是对的,原因很简单,这是一个要持久化布局的文件。但是,由于客户不希望看到与viewmodel相关的数据以清晰的形式显示,我们添加了这样一个转换注意:获取文本,将其转换为utf-8,然后使用base-64再次获取文本有点奇怪;这是某种“我的传输不支持unicode”的问题吗?您应该使用unicode IMO。另外,当您知道它是
byte[]
(个人最讨厌的)时,为什么要使用
var
(个人最讨厌的代码)呢:var base64EncodedBytes=Convert.FromBase64String(base64EncodedData.Replace(“\n”,”);关于你的问题,你是对的,原因很简单,这是一个要持久化布局的文件。但是,由于客户不希望看到与中显示的viewmodel相关的数据,我们添加了这样的转换