VB6.0でBase64のデコード方法を教えてください
- VB6.0でメールソフトを作っている際に、受信したメールのヘッダに表示されるSubjectがわけのわからないアルファベットになってしまう場合があります。この問題を解決するために、Base64のデコード方法を知りたいと思っています。
- 具体的な手順としては、Subjectの文字列から特定のパターンを抽出し、Base64の文字列を取得します。次に、Base64の文字列を6ビット単位の2進数表記に変換し、8ビット単位の2進数にまとめます。最後に、8ビット単位の2進数をASCIIコードに変換し、シフトJISに変換します。
- この処理をVB6.0で実行するためのコードを教えてください。なお、この問題のSubjectの答えは「あいうえお」となります。
- ベストアンサー
VB6.0 Base64のデコード方法を教えてください
VB6.0 でメールソフトを作っているのですが、受信したメールのヘッダで Subject 部分を見ると、 Subject: =?ISO-2022-JP?B?GyRCJCIkJCQmJCgkKhsoQg==?= と訳の分からないアルファベットになってしまっています。 この Subject を日本語にする方法を教えてください。 一応、Base64のデコードという方法を知りましたが、この処理をVBで実行する場合のコードが分かりません。 工程的には下記の通りかと… サブジェクトの文字列から「?ISO-2022-JP?B?」の文字列の次のから「?=」までの間の文字列を抽出し、 GyRCJCIkJCQmJCgkKhsoQg== をネタに下記の処理。 1.各文字を2進数表記(6ビット単位)に変換(RFC 2045の Table 1 を使う)。 2.2進文字列(6ビット単位)を8ビット単位でまとめる。 3.8ビット単位の2進数をASCIIコードに変換。 4.シフトJISに変換。 ちなみに、この Subject の答えは あいうえお です。 分かる方、VBコードを教えてください。
- type0000
- お礼率30% (10/33)
- Visual Basic
- 回答数1
- ありがとう数4
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは。 最近の同じような質問が出ていましたが、もしも、単独で変換エンジンを作るとなると意味が違うかもしれませんね。一応、以下のBasp21 の オブジェクトからBase64 デコードは出来ますが、確か、個別のDLLがあったと思いますから、それが使えれば、それに越したことはありませんね。 例: Dim myString As String myString = "Subject: =?ISO-2022-JP?B?GyRCJCIkJCQmJCgkKhsoQg==?=" Dim bobj As Basp21 Dim buf As String Set bobj = New Basp21 buf = bobj.Base64(myString, 3)
関連するQ&A
- メールのデコードについて(RFC2231)
よろしくお願いいたします。 メーラー(Becky!やALMAIL等)によっては、RFC2231形式で添付ファイル名をエンコードして送信していますが、RFC2231形式で送信された添付ファイル名をデコードする方法をご教授いただきたく。 下記の@ITで紹介された記事によるとRFC2231形式は%の後ろ2文字の16進数がエンコードされた文字コードであるとなっています。 http://www.atmarkit.co.jp/fnetwork/rensai/netpro04/netpro01.html しかし、Becky!等のメーラーでは、下記の【】内のように、%の間が2文字以上の場合や、ASCII文字列は直接埋め込まれてしまうパターンがあります。 【filename*=iso-2022-jp''%1B%24B%24%5B%242%24%5B%242%1B%28B%2Etxt】→元は【ほげほげ.txt】 ASCII文字列が直接埋め込まれている部分は何とかなるとして、%24B%のような部分はどのようにデコードするのでしょうか? もしかしてBはBASE64?
- ベストアンサー
- その他([技術者向] コンピューター)
- MIMEでエンコードされたMailのSubjectのデコード、エンコード
mailにおいて、MIMEにてエンコードされたSubject: の内容をテキストに落とすと例えば下のような エンコードされた文字列になります。 これをデコードし、かつエンコードするための VisualC++のコードを教えてください。 Subject: =?ISO-2022-JP?B?GyRCJTUlcyVXJWslYSUkJWsbKEI=?= よろしくお願いします。
- ベストアンサー
- C・C++・C#
- Base64での送信でタイトルが環境により文字化け
CGI(Perl)のメールフォームで、 Base64エンコードでメール送信をするときに、 特定の文字列の組み合わせをエンコードしたものが、 環境によりタイトルだけ文字化けする現象が発生します。 GmailとWindowsメールで文字化けし、 Thunderbirdだと文字化けしないのですが、 原因と対応がわかる方がいれば教示いただけませんか。 Shift_JISの5Cなどとは根本的に異なりそうですが・・・ 以下、いくつかテストした文字列です。 「XXX」お問い合わせを受け付けました ↓ Subject: =?iso-2022-jp?B?44CMWFhY44CN44GK5ZWP44GE5ZCI44KP44Gb44KS5Y+X44GR5LuY44GR44G+44GX44Gf?= Gmail:文字化け Windowsメール:文字化け Thunderbird:文字化けせず お問い合わせを受け付けました ↓ Subject: =?iso-2022-jp?B?GyRCJCpMZCQkOWckbyQ7JHI8dSQxSVUkMSReJDckPxsoQg==?= Gmail:文字化けせず Windowsメール:文字化けせず Thunderbird:文字化けせず 「XXX」おい合わせを受け付けました ↓ Subject: =?iso-2022-jp?B?GyRCIVYbKEJYWFgbJEIhVyQqJCQ5ZyRvJDskcjx1JDFJVSQxJF4kNyQ/GyhC?= Gmail:文字化けせず Windowsメール:文字化けせず Thunderbird:文字化けせず 「お問い合わせを受け付けました」 ↓ Subject: =?iso-2022-jp?B?GyRCIVYkKkxkJCQ5ZyRvJDskcjx1JDFJVSQxJF4kNyQ/IVcbKEI=?= Gmail:文字化けせず Windowsメール:文字化けせず Thunderbird:文字化けせず 特定の一文字の問題ではないようなのですが・・・ またプログラム(一部抜粋)では下記のように変換しています。 ########################## use MIME::Base64; if($str =~ /[^!-~\s]/){ $str = encode_base64($str, ""); $str = '=?iso-2022-jp?B?' . $str . '?='; } ########################## よろしくお願いします。
- ベストアンサー
- CGI
- メールの件名のデコード
お世話になります。 メールの件名が「登録」のもののみ、以降の処理をしようとしています。 $n_msg = $pop3->numMsg(); $header_list = $pop3->getParsedHeaders($n_msg); $subject = mb_decode_mimeheader($header_list['Subject']); print "$subject<br>"; としても「??」と表示され、 「登録」に戻りません。 if($subject <> "登録") なら、対象外とするという処理に したいのですが、どうすればいいでしょうか? ちなみに、、 $header_list['Subject']は、 =?iso-2022-jp?B?GyRCRVBPPxsoQg==?= です。 よろしくお願いします。
- 締切済み
- PHP
- 特殊な文字列のデコードについて
ご教授願います。 迷惑メールなどに多いのですが、下記の様に記述されている文字列があります。 ↓↓↓↓↓↓ =1B$B"(%a!<%k1\MwL5NA"(=1B(B 上記の文字列をフリーウェアの「MBaker2」でデコードすると ↓↓↓↓↓↓ ※メール閲覧無料※ の様に、読める形の文字列に変換されます。 こうした形で意図的にエンコード(?)された文字列をPHPを使ってデコードするにはどうしたら良いのでしょうか? メールクライアントのOutlook Express6等でも読めるので、一定の法則に則って変換されていると思うのですが、そのアルゴリズム(?)が判りません。 PHPのマニュアルを調べてデコード系の関数を色々と試してみましたが、どうにも上手く行きません。 前述の「MBaker2」のヘルプから、HTML特有の制御文字列と漢字コードが関係している所までは判ったのですが、ココで壁にぶつかってしまいました。 PHPで人が読める形にPHPで処理するにはどうしたら良いのでしょうか? 宜しくお願いします。 P.S PHPのバージョンは 5.2.6 を使い、PHPでの入出力は、UTF-8で統一しています。
- ベストアンサー
- PHP
- メール(iso-2022-jp-2)のデコード
お世話になります。 C#.NETまたはVB.NETでiPhoneから送られたメールを解析するメーラーを作っているのですが、 charset=iso-2022-jp-2、charset=iso-2022-jp-3で送られてくる場合があり、 そのデコードができずに困っております。 charset=iso-2022-jpですと、下記でデコードできるのですが、 charset=iso-2022-jp-2、charset=iso-2022-jp-3はそもそも Encodingクラスで扱えるエンコーディング名に存在しないので、 どのように変換してよいか分かりません。 string mailtext = "?"; // ←メール内容をそのまま入れます byte[] bytes = Encoding.ASCII.GetBytes(mailtext); string body = Encoding.GetEncoding("iso-2022-jp").GetString(bytes); 宜しくお願い致します。
- 締切済み
- Visual Basic
- phpで文字変換がうまくできません。
メールデータでSubjectを変換したいのですが文字バケしてしまいます。 あるサイトを参考に変換してみたのですがうまくいきません。 どなたか教えて下さい、よろしくお願いします。 $Subject="=?iso-2022-jp?B?YWJjGyRCJUYlOSVIIzEjMBsoQg==?="; $Subject= mb_decode_mimeheader( $Subject); $Subject= mb_convert_encoding( $Subject, "EUC-JP" ); echo $Subject; 結果:abc?????(←正しい結果は「abcテスト10」)
- ベストアンサー
- PHP
- シフトJIS⇒MIMEエンコード(RFC2047)
シフトJISの文字列をMIMEエンコード(RFC2047) (メールのヘッダに使うような、=?ISO-2022-JP?B?・・・というようなヤツ) に変換する、unix系gcc(C++ではなくてC)でコンパイルできるライブラリ、 ないでしょうか。。? 途中まで作りかけたのですが、 あまりに複雑でギブアップしてしまいまして。。 また、用途上、nkfなどの外部プログラムは呼び出せないのです。
- ベストアンサー
- C・C++・C#
- VB6.0の「vbFromUnicode」はVB.NETではどれに相当しますか?
VB6.0で、例:StrConv(Text, vbFromUnicode)とかで使用する、 「vbFromUnicode」(文字列を Unicode からシステムの既定のコードページに変換する) は、VB.NETでは使用できないようです。(相当する定数はない?) 「vbFromUnicode」と同等の機能を、VB.NETで使用したいのですが、 どうすれば良いでしょうか?
- ベストアンサー
- Visual Basic
お礼
こんばんわ。 & ありがとうございます! 単独で変換エンジン誰か作ってないかな~という他力本願で質問してました(汗) Basp21は初耳でした。世の中、ライセンスフリーでいいものあるもんですね~。 上記のコードでBase64 デコード出来ました。 どうもありがとうございました。