自从过去2-3天以来我一直在努力寻找以下异常的解决方案:
The input is not a valid Base-64 string as it contains a non-base 64 character,
more than two padding characters, or a non-white space character among the
padding characters.
我搜索了类似的问题并找到了答案,但它们都不适合我。以下是我要转换的数据:
{\"Package\":[{\"Faq\":[{\"FaqId\":1,\"AppId\":65,\"Title\":\"Test1\",
\"Description\":\"Test1\",\"IsRemoved\":false,\"AddDate\":1344969000,
\"LastUpdated\":1344969000},{\"FaqId\":2,\"AppId\":65,\"Title\":\"Test2\",
\"Description\":\"Test2\",\"IsRemoved\":false,\"AddDate\":1344969000,
\"LastUpdated\":1344969000}]}\r\n]}\r\n"
现在我无法确定哪些是非基本64个字符。如果有那些?以及如何删除它们?
c#我用于解析字符串的代码行:
data.Data = Convert.FromBase64String(data.Data.ToString());
data.Data
包含上述数据。
我该如何解决这个问题?
答案 0 :(得分:4)
你正在尝试错误的方式。 FromBase64String转换FROM Base64(即采用Base64编码的字符串并将其转换为原始字符串),而不是TO Base64(采用普通字符串并转换为base64编码)。由于您为该方法提供的字符串不是base64编码的,因此它会失败。
答案 1 :(得分:0)
如果“{\”Package \“:[{\”Faq \“:[{\”FaqId \“:1,\”AppId \“:65,\”Title \“:\”Test1 \“, \ “描述\”:\ “测试1 \”,\ “IsRemoved \”:假,\ “ADDDATE \”:1344969000,\ “LASTUPDATED \”:1344969000},{\ “FaqId \”:2,\“的AppId \ “:65 \” 标题\ “:\” 的Test2 \”,\ “描述\”:\ “的Test2 \”,\ “IsRemoved \”:虚假,\ “ADDDATE \”:1344969000,\ “LASTUPDATED \”: 1344969000}]} \ r \ n]} \ r \ n“是您尝试转换的字符串,然后它实际上不是基本64有效输入。您可以在http://base64converter.com/
创建转换后的版本答案 2 :(得分:0)
这里有JSON,而不是BASE64。使用JSON反序列化程序,例如JSON.NET。
答案 3 :(得分:0)
data.Data = Convert.FromBase64String(data.Data.ToString());
// NOTE: The packager has some different behavior because it GZIPs the output.
// service cleanup, logging, and outgoing response. NOTE: the ORDER of this is important.
WebOperationContext.Current.OutgoingResponse.StatusCode = HttpStatusCode.OK;
WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Encoding", "gzip");
WebOperationContext.Current.OutgoingResponse.ContentType = "application/json";
WebOperationContext.Current.OutgoingResponse.Headers.Add("Content-Disposition", "attachment; filename=package.json");
ThreadPool.QueueUserWorkItem(delegate
{
man.Save("Package served.");
});
return new MemoryStream((byte[])data.Data);
这是我的代码。现在,如果删除base64转换并反序列化json,则无法保存json文件。它抛出一个错误,即json文件无法保存,无法读取源。