2

ASP.Net アプリケーションの作業プロセスでは、次のような文字列を処理する必要があります。

=?utf-8?B?SWhyZSBCZXN0ZWxsdW5nIC0gVmVyc2FuZGJlc3TDpHRpZ3VuZyAtIDExMDU4OTEyNDY=?=

どうすればそれを通常の人間の言語にデコードできますか?

前もって感謝します!

アップデート:

Convert.FromBase64String()等しい文字列では機能しません =?UTF-8?Q?Bestellbest=C3=A4tigung?=

The format of s is invalid. s contains a non-base-64 character, more than two padding characters, or a non-white space-character among the padding characters.例外が発生します。

アップデート:

解決策はこちら

代替ソリューション

アップデート:

それはどのような文字列エンコーディングですか: Nweiß???

4

7 に答える 7

3

実際には base-64 文字列です。

        string zz = "SWhyZSBCZXN0ZWxsdW5nIC0gVmVyc2FuZGJlc3TDpHRpZ3VuZyAtIDExMDU4OTEyNDY=";

        byte[] dd = Convert.FromBase64String(zz);

        // Returns Ihre Bestellung - Versandbestätigung - 1105891246
        string yy = System.Text.Encoding.UTF8.GetString(dd);
于 2012-02-14T14:50:51.527 に答える
3

これらの種類の文字列をデコードするライブラリを作成しました。http://github.com/jstedfast/MimeKitで見つけることができます

具体的には、MimeKit.Utils.Rfc2047.DecodeText()

于 2013-09-02T14:57:59.880 に答える
2

これはMIMEヘッダーエンコーディングのようです。2番目の例のQは、QuotedPrintableであることを示しています。

この質問は、バリアントをかなりうまくカバーしているようです。クイック検索では、これを自動的にデコードする.NETライブラリは見つかりませんでしたが、必要に応じて手動で行うのは難しいことではありません。

于 2012-02-14T15:41:58.477 に答える
2

それはUTF8ではありません。これは Base64 でエンコードされた文字列です。

UTF-8 は、ターゲット文字列が UTF8 形式であることのみを示します。Base64 文字列をデコードした後:

SWhyZSBCZXN0ZWxsdW5nIC0gVmVyc2FuZGJlc3TDpHRpZ3VuZyAtIDExMDU4OTEyNDY=

次の結果が得られます。

Ihre Bestellung - Versandbestätigung - 1105891246

Base64 オンライン デコード/エンコードを参照してください。

于 2012-02-14T14:50:32.603 に答える
1

base64 文字列のように見えます。

Convert.FromBase64String を試す

http://msdn.microsoft.com/en-us/library/system.convert.frombase64string.aspx

于 2012-02-14T14:50:36.530 に答える
1

これはエンコードされた単語で、ASCII 以外のコンテンツがある場合にメール ヘッダーで使用されます。エンコードされた単語は、RFC 2047 で定義されています。

https://www.rfc-editor.org/rfc/rfc2047#section-2

エンコードされた単語の BNF は次のとおりです。

encoded-word = "=?" charset "?" encoding "?" encoded-text "?="

したがって、これを解釈する正しい方法は次のとおりです。

  1. データは3番目と4番目の疑問符の間のものです
  2. これは Base64 でエンコードされています (「B」は Base64 を表し、「Q」の場合は引用印刷可能です)。
  3. データをデコードすると、UTF-8 文字セットになります。

@Shaiが正しく指摘したように、結果は次のとおりです。

Ihre Bestellung - Versandbestätigung - 1105891246

これはドイツ語です。ウムラウトは明らかに UTF-8 の理由であり、したがってエンコードされた単語が必要です。翻訳は次のとおりです。

Your order - Delivery confirmation - 1105891246

どうやら注文の追跡番号のようです。

最新の電子メール クライアント (および Outlook) はすべて、エンコードされた単語を透過的にサポートします。

于 2013-08-29T17:49:21.907 に答える
0

これはちょっとした推測ですが、試してみましょう

  • =?最初と?=最後から削除
  • ?文字セットとして次への開始を保持する
  • を削除しますB?- わからない、それが何であるか
  • 残りをbyte[]ビアに変換System.Convert.FromBase64String()
  • Encoding.GetSTring()2 番目のステップで記憶した文字セットを使用して、これを最終的な文字列に変換します。
于 2012-02-14T14:54:42.327 に答える