電子メールの件名やあて先など、日本語を使うと、
インターネットヘッダ内では、例えば以下のような
ASCII文字にエンコードされていますが、
=?iso-2022-jp?Q?=1B$BEE;R%a!<%k$N7oL>?=
これはどんな規則でエンコードされているのでしょうか。
つまり、メーラを使わずに手操作でデコードしたいのですが、
どのような手続きをとれば、日本語(シフトJISなど)に
変換できるのでしょうか?
あるいは、フリーの変換ソフトなどがあれば、教えていただきたく
思っています。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

デコードするなら The Web KANZAKI の


文字化けしたメールの修復
http://kanzaki.com/docs/jis-recover.html


どのようにエンコードされているのかは、とほほの WWW 入門の
CGI から送信するメールのヘッダに日本語を用いるには
http://tohoho.wakusei.ne.jp/wwwxx006.htm

が役に立つと思います。

この回答への補足

ありがとうございます。特に後者のサイトは、役に立ちました。
けっきょく、base64なわけですね。納得です。
大量のメールを自動的に変換したく思っているのですが、
Cで書かれているbase64のデコーダのソースプログラム、
なければPerlでもかまわないのですが、そんなものは
どこかで手に入らないものでしょうか。

補足日時:2002/03/08 13:15
    • good
    • 0

 私の場合、pascal ですが、こんな関数でシフトJISに直しています。

(DOS 版です。)
 自己流ソフトでスミマセン。正しいという保証はありません。
 なお、このサイトでは、インデントが無視されてしまうので、とても見にくくなっています。

function mmdecode(inrec:string):string; (* MIMEをシフトJISコードに変換 *)
(* MIME decode 参考文献=日経バイト No.177 1998.5 pp.294-297 *)

function mmconv(mm:string):string;
const BASE64=
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';
const kin=#$1B+'$B'; kout1=#$1B+'(J'; kout2=#$1B+'(B';
var jis,sjis,s:string;
m1,m2,m3,m4,n1,n2,n3:byte;
nchar,loc,i:integer;
begin
jis:='';
(* JIS コードに変換 *)
while mm<>'' do
begin
m1:=pos(mm[1],BASE64)-1; m2:=pos(mm[2],BASE64)-1;
m3:=pos(mm[3],BASE64)-1; m4:=pos(mm[4],BASE64)-1;
(* writeln('m1=',m1,' m2=',m2,' m3=',m3,' m4=',m4); *)
if mm[3]='=' then nchar:=2
else if mm[4]='=' then nchar:=3
else nchar:=4;
n1:=m1*4+m2 div 16;
if nchar>2 then n2:=(m2 mod 16)*16+m3 div 4;
if nchar>3 then n3:=(m3 mod 4)*64+m4;
(* writeln('n1=',n1,' n2=',n2,' n3=',n3); *)
if nchar=2 then jis:=jis+chr(n1)
else if nchar=3 then jis:=jis+chr(n1)+chr(n2)
else jis:=jis+chr(n1)+chr(n2)+chr(n3);
delete(mm,1,4);
end;
(* write('jis='); for i:=1 to length(jis) do write(hex(ord(jis[i])),' '); *)
(* JIS コードの内、漢字コードをシフトJISにする *)
sjis:='';
while jis<>'' do
begin
loc:=pos(kin,jis); (* writeln('kin の位置=',loc); *)
if loc=0 then
begin
sjis:=sjis+jis; jis:='';
end
else
begin
sjis:=sjis+copy(jis,1,loc-1); delete(jis,1,loc+2);
loc:=pos(kout1,jis);
if loc=0 then loc:=pos(kout2,jis);
if loc=0 then writeln('error kout なし');
s:=copy(jis,1,loc-1);
(* write('s='); for i:=1 to length(s) do write(hex(ord(s[i])),' '); *)
sjis:=sjis+jis2shift_jis(s); delete(jis,1,loc+2);
end;
end;
(* writeln('mmconv の結果=',sjis); *)
mmconv:=sjis;
end;

(* mmdecode 本体 *)
const key1='=?ISO-2022-JP?B?'; key2='=?iso-2022-jp?B?'; keyend='?=';
var result,mm:string;
var loc:integer;
begin
result:='';
while inrec<>'' do
begin
loc:=pos(key1,inrec); if loc=0 then loc:=pos(key2,inrec);
if loc=0 then
begin
result:=result+inrec; inrec:='';
end
else
begin
result:=result+copy(inrec,1,loc-1); delete(inrec,1,loc+15);
loc:=pos(keyend,inrec);
if loc=0 then
begin
writeln('error 終わり「',keyend,'」が存在しない'); inrec:='';
end
else
begin
mm:=copy(inrec,1,loc-1); delete(inrec,1,loc+1);
(* writeln('mmconv に渡す文字列=',mm); *)
if (length(mm) mod 4)<>0 then
writeln('error BASE64 の長さが4の倍数でない')
else result:=result+mmconv(mm);
end;
end;
end;
mmdecode:=result;
end;
    • good
    • 0
この回答へのお礼

やはりご自身で変換する必要があり、
独自のプログラムを書いたのでしょうか。
ご親切にありがとうございました。
7,8年前、僕もPascalを使っていたのですが、
Cに乗り換えて以来、すっかり忘れて、コンパイラすらない状況です。
頑張って、解読し、Cに書き直してみます。

お礼日時:2002/03/23 10:40

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qdo while文のエラー??

下のような拡張ユーグリッドのプログラムを組んだのですがエラーが出て何が悪いのかがわかりません。エラーの内容は
apRSA.java:18: 型の開始が不正です。
do{
^
apRSA.java:57: <identifier> がありません。
}while(q.compareTo(BigInteger.ONE) !=0);
^
の二つです。どなたか助けてください。

import java.math.*;
import java.util.Random;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class apRSA extends Applet{
BigInteger p,q,e,d,m,c,m2,t,t1,p1,q1,e1;

final int bit =512;
final int k =10;
Random rnd =new Random();

do{
p=new BigInteger(bit,k,rnd);
p1=p;
q=new BigInteger(bit,k,rnd);
q1=q;

BigInteger []x;
BigInteger []y;
BigInteger []z;

x =new BigInteger[3];
y =new BigInteger[3];
z =new BigInteger[3];

x[0] =BigInteger.ONE;
y[0] =BigInteger.ZERO;
z[0] =p;

x[1] =BigInteger.ZERO;
y[1] =BigInteger.ONE;

while(q.compareTo(BigInteger.ZERO) !=0){
BigInteger r =p.mod(q);
p=q;
q=r;
}

}while(q.compareTo(BigInteger.ONE) !=0);
}

下のような拡張ユーグリッドのプログラムを組んだのですがエラーが出て何が悪いのかがわかりません。エラーの内容は
apRSA.java:18: 型の開始が不正です。
do{
^
apRSA.java:57: <identifier> がありません。
}while(q.compareTo(BigInteger.ONE) !=0);
^
の二つです。どなたか助けてください。

import java.math.*;
import java.util.Random;
import java.applet.Applet;
import java.awt.*;
import java.awt.event.*;

public class ap...続きを読む

Aベストアンサー

このapRSAっていうクラスにはメソッドはないのですか。
Javaの場合、処理はメソッド中に書きます。

Q送信者が空欄で件名は  =?iso-2022-jp?B??=

他の質問をいろいろ見させてもらったんですが
件名が何か意味がありげで気持ち悪いので質問させていただきます
送信者は空欄です
件名は  =?iso-2022-jp?B??=
内容はありません
このようなメールは、海外からのもので
見てしまうと相手に伝わってしまうという類のものなのでしょうか
詳しい方、ご回答よろしくお願いいたします

Aベストアンサー

>見てしまうと相手に伝わってしまうという類のものなのでしょうか
そのメールが届いた時点であなたのメールアドレスが有効であると相手に伝わっています。

ちなみに
>?iso-2022-jp?B??=
とは、本来「このメールの文字コード」を表します。
ヘッダを表示するとだいたいわかりますが、メールヘッダが不正になっているため件名と本文の区切りがわからなくなっているものが多いはずです。

基本的には、受信してしまったら即削除してください。

QL-03Cの動画をパソコンに取り込むには??

お世話になります。
PCはWin7-64Bt版です。microSDカードをPCに接続してホルダー内を検索しても動画ファイルを見つけることができません。L-03C本体内では動画の再生はできます。
ドコモのデーターリンクソフトを使っても静止画は取り込めますが動画は取り込めません。
教えて頂ければ嬉しいです。お願い致します。

Aベストアンサー

マニュアルを見ると…

 「\PRIVATE\DOCOMO\MMFILE」
にあるようですね。
(更にサブフォルダならMUD???(???は001~999)に成ります)
ファイル名は
 MMF????.3gp(????は0001~9999)
と成っている筈です。

尚、恐らく、WindowsMediaPlayerで再生出来るかと思いますが
出来ない様であれば、Quicktimeをインストールすれば再生出来る
様に成ると思います。

Qこんなメーラがほしい!

次のようなメーラはないでしょうか?

(1) 自動仕訳のルール、メールアカウントのバックアップ・復元が簡単
 → ほかのPCで同じ環境を再現するのが簡単であってほしい。

(2) 自動仕訳のルールの設定が快適
 → Outlookの自動仕訳ダイアログの使い勝手の悪さにうんざりしています。

(3) Outlook Express からの移行がすごく簡単(メール、アドレス)。
 → 今 OE を使っています。

(4) メールの量が多くても動作が軽い。特に検索。
 → 全部で1.5GBくらいありますが、すべて重要なメールです。

Aベストアンサー

#1さん同様、Becky2をお勧めします。シェアウェアですが...

(1)データフォルダを丸ごとバックアップだけでOKです。復元もバックアップしたフォルダをデータフォルダとして指定するだけです。
(2)仕分け先のフォルダに条件を付ける方法で、非常に直感的で気に入っています。これは好みでしょうが。OEやThunderbirdのように一元管理も出来ます。また便利なプラグインがあり、その導入で新規の仕分けも楽に出来ます。
(3)実際移行したことはありませんが、移行のテクニックは確立済みです。
http://www.becky-users.net/faq/contents/01003.html
(4)私のメールボックスは合計 700MBぐらいでした。特に問題ないですよ。もっともよく使う(メーラー内の)フォルダは1000通ぐらいまでを上限にして、過去メールは別フォルダに移行しています。過去メールを含む横断検索でもそれほどストレスなく結果が帰ってきます。

老舗的なメーラーで、枯れたソフトでもあるので安定度はよいでしょう。また、FAQ等の文書も充実しています。
まだバージョンアップも行われていますし、プラグインによる機能拡張も充実しているので不便は少ないと思います。

#1さん同様、Becky2をお勧めします。シェアウェアですが...

(1)データフォルダを丸ごとバックアップだけでOKです。復元もバックアップしたフォルダをデータフォルダとして指定するだけです。
(2)仕分け先のフォルダに条件を付ける方法で、非常に直感的で気に入っています。これは好みでしょうが。OEやThunderbirdのように一元管理も出来ます。また便利なプラグインがあり、その導入で新規の仕分けも楽に出来ます。
(3)実際移行したことはありませんが、移行のテクニックは確立済みです。
http://www.beck...続きを読む

Q水素の製法って…???

化学の授業の課題で、[水素]についてのレポートを書かなくてはならなくなりました。必衰項目は[性質]と[製法]なのですが、使用している教科書が英語で書かれていて、英語が大の苦手な私にはさっぱり分かりません。ネット上でも検索してみましたが、何故かうまいこと欲しい内容を検索できませんでした。レポートの締め切りは9月25日(火)です!こんなギリギリに質問するのは失礼かもしれませんが、どなたか水素の製法について教えてください!!

Aベストアンサー

No.2の発言の補足です。

「燃料電池」は水素と酸素を反応させて電気を起こす電池でした。

その「燃料電池」の乗せて走る「燃料電池自動車」で、水素を発生
させるために、天然ガスやガソリンから水素を発生させる仕組みが
あるということです。

詳しい内容は、上記の括弧内のキーワードで検索して調べてください。

Qメール送信時に文章のチェックをしてくれるメーラ

メーラのThunderBirdを使用しています。
メールを送信する場合にテンプレートから作成するのですが、
文中のYYYY/MM/DDや、○○様などを本来は適宜書き直すべきところをそのまま送ってしまう
ことが多々あります。
このようなミスを防ぐために送信前に警告を出してくれるとありがたいのですが、
そのような機能があるメーラがありましたら教えてください。

Aベストアンサー

>文中のYYYY/MM/DDや、○○様などを本来は適宜書き直すべきところ

Thunderbirdを使われているのでしたら、テンプレートに用意されたこれらの内容が具体的に判りませんが、次のCheck and Sendの拡張機能を入れたら事前チェックが可能です。

設定には「メッセージに以下の単語が」「あったら(なかったら)」「確認する」とか、「添付ファイルのないメッセージに以下の単語が」「あったら(なかったら)」「確認する」などの項目があり、複数の単語をORで設定できます。

例えば、「YYYY/MM/DD」や「〇様」がテンプレートに使われているのでしたら、これらの文字列を「単語」の方に設定したらよいと思います。

その他、「宛先」や「宛名」の確認も設定できますので、使ってみてください。
「ウッカリ」送信はなくなると思います。
http://news.mynavi.jp/articles/2011/09/30/thunderbird7/001.html
https://addons.mozilla.org/ja/thunderbird/addon/check-and-send/

>文中のYYYY/MM/DDや、○○様などを本来は適宜書き直すべきところ

Thunderbirdを使われているのでしたら、テンプレートに用意されたこれらの内容が具体的に判りませんが、次のCheck and Sendの拡張機能を入れたら事前チェックが可能です。

設定には「メッセージに以下の単語が」「あったら(なかったら)」「確認する」とか、「添付ファイルのないメッセージに以下の単語が」「あったら(なかったら)」「確認する」などの項目があり、複数の単語をORで設定できます。

例えば、「YYYY/MM/DD」や「〇様」がテンプ...続きを読む

Q横浜で転勤族が多い地域は???

横浜で転勤族が多く、治安の良い地域を教えてください。

Aベストアンサー

青葉区や都筑区はどうでしょう???

Q必要ないメーラの削除の方法(T_T)

ネスケをいれたら、ネスケのメーラとAOLのメッセンジャーがインストールされてしまいました。
この二つは確実に入らないので削除したいのですが、削除の方法がわかりません。教えてください!!

また、メーラはEdMaxを使用していますが、HPでメールをだそう(メールはこちらへ、みたいなところで)とクリックすると、EdMaxがでずにネスケのメーラがでてきて、しかも「きちんとインストールされてないからダメです」みたいなエラーが出てしまいます。
EdMaxを標準のメーラにする方法も教えてください!

よろしくお願いします!!m(__)m

Aベストアンサー

AOLメッセンジャーの削除は、「アプリケーションの追加と削除」で
「Winファイル」のタブから「オンラインサービス」の中にあります。
詳細で不要なもんのチェックをはずします。そして、再起動です。

ネスケは、スタートメニュから開いてもアンインストーラーが無いでしょうか?

Qせいちょうこったんえんって??

「せいちょうこったんえん」っていうのになってるみたいなんですけどよく分かりません。知ってる人いたら教えてください。むっちゃ痛い・・・。

Aベストアンサー

成長痛あるいは無菌生骨端炎(骨端症)のことでしょうか?

参考URL:http://www.ibaraki.med.or.jp/kenkou/sports/99-4.htm

QmacOSX環境のPCにメーラだけアンインストール・再インストールしたい

知り合いのmacのメーラがおかしくなりました。
macにもともと入っている"mail"というメーラです。
これをアンインストール・再インストールしたいのですが
OSXのCD-ROMを入れてみてもインストールしたいソフトの選択画面がよくわかりません。
自分はmacでほとんどこうした作業をしたことはなく、友人は取説をなくしたそうで困っています。
macOSX環境のPCにメーラだけアンインストール・再インストールする方法を教えて下さい。

Aベストアンサー

やった事無いけど

http://til.info.apple.co.jp/cgi-bin/WebObjects/TechInfo.woa/wa/showTIL?id=106451

が該当するのかも、
自分の場合CoreServiceのClassic.appが壊れた時に、
OS9で起動して、
別パーティションにインストールしたOSXから上書きコピーさせたけどね。


人気Q&Aランキング

おすすめ情報