1

以下の例外の解決策を見つけるのに、過去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上記のデータが含まれています。

これを解決するにはどうすればよいですか?

4

4 に答える 4

4

あなたは間違った方法を試みています。FromBase64String は、FROM Base64 に変換します (つまり、Base64 でエンコードされた文字列を取り、元の文字列に変換します)。TO Base64 (通常の文字列を取り、base64 エンコーディングに変換します) ではありません。メソッドに指定した文字列は base64 でエンコードされていないため、問題が解決されます。

于 2012-08-19T06:42:59.350 に答える
0

ここにあるのは、BASE64 ではなく JSON です。JSON.NETなどの JSON デシリアライザーを使用します。

于 2012-08-19T15:28:48.503 に答える
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ファイルを保存できず、ソースを読み取れないというエラーがスローされます。

于 2012-08-20T06:31:49.033 に答える
0

If "{\"Package\":[{\"Faq\":[{\"FaqId\":1,\"AppId\":65,\"Title\":\"Test1\",\"説明\":\"Test1\",\"IsRemoved\":false,\"AddDate\":1344969000,\"LastUpdated\":1344969000},{\"FaqId\":2,\"AppId\":65 ,\"タイトル\":\"Test2\",\"説明\":\"Test2\",\"IsRemoved\":false,\"追加日\":1344969000,\"最終更新日\":1344969000}] }\r\n]}\r\n" は変換しようとしている文字列であり、実際には base 64 の有効な入力ではありません。ここで変換されたバージョンを作成できますhttp://base64converter.com/

于 2012-08-19T06:52:06.350 に答える