C# 转换为base64会添加一个返回字符
我正在尝试将字典转换为字符串结尾,然后将其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
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相关的数据,我们添加了这样的转换