- PR -

メールの Subject のエンコードについて

1
投稿者投稿内容
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2006-02-12 21:54
SMTP で日本語の Subject を含むメールを送信する際に、一般的には ISO-2022-JP で B エンコーディング (BASE64) が使用されることが多いようですが、Shift_JIS で Q エンコーディング (Quated-Printable) が使用された場合に、一般的なメールクライアントはそれを解読できるのでしょうか?

なお、Shift_JIS の Q エンコーディングが使用されたメールを見たことはほとんどありません。。。

「やってみれば?」とか「クライアントの仕様を確認してみれば?」言われるような質問で申し訳ありませんが、よろしくお願いします。
流しのエンジニア
常連さん
会議室デビュー日: 2003/10/17
投稿数: 48
投稿日時: 2006-02-13 00:32
2000年前後の話ですが、日本語でQエンコードを使って送信する例は、海外のASPのWebメールで見たことがあります。今もあるかは、わかりませんが。

それのデコードはいくつかのメーラーで試してみたらできる、できないはありましたね。どのメーラーがどうだったというのは資料が残ってないのでわかりませんが。
現状もあまりかわらないと思いますので、やはり試してみるしかないでしょう。

ただ、感覚的にはブラウザーとセットのメールというのは変換エンジンが同じだと思うので、できるのだろうなと思います。

問題としては、エンコーディングの混在が可能かというのもありますね。
たとえば、
Subject: 2005-02-13 の結果報告

Subject: =?iso-2022-jp?B?MjAwNS0wMi0xM4LMjIuJypXxjZA=?=
であれば、ほぼ確実にデコードできるでしょうが

Subject: 2005-02-13 =?iso-2022-jp?B?gsyMi4nKlfGNkA==?=
だったか
Subject: =?US-ASCII?Q?2005-02-13=? =?iso-2022-jp?B?gsyMi4nKlfGNkA==?=
なんてことをするメーラーを見たことがあります。

文字コードでシフトJISを使っているよりも、このあたりに対応できるかという方が重要ではないかと思います。

ご参考まで。
あんとれ
ぬし
会議室デビュー日: 2004/01/14
投稿数: 556
投稿日時: 2006-02-13 13:27
引用:

流しのエンジニアさんの書き込み (2006-02-13 00:32) より:
2000年前後の話ですが、日本語でQエンコードを使って送信する例は、海外のASPのWebメールで見たことがあります。今もあるかは、わかりませんが。



ありがとうございます。Q エンコード自体が日本語文字を3バイトにしてしまうため、B エンコードに比べるとあまり用いられていないようですね。ISO-8859-1 をエンコードする方式としてはよく用いられているようなのですが。

ちなみに、今回問題になっているのは、あるアプリケーションが、Shift_JIS の Q エンコードを用いていて、かつ文字化けが発生してしまっている (正式には Subject が途中で切れてしまい、本文に乱入してしまっている) ような状況だったので、そのような実装をしているアプリケーション側に問題があるのではないかと思って質問させていただきました。まあ、仕様上は間違いではないんでしょうけど・・・。
流しのエンジニア
常連さん
会議室デビュー日: 2003/10/17
投稿数: 48
投稿日時: 2006-02-13 22:33
引用:

あんとれさんの書き込み (2006-02-13 13:27) より:
ありがとうございます。Q エンコード自体が日本語文字を3バイトにしてしまうため、B エンコードに比べるとあまり用いられていないようですね。ISO-8859-1 をエンコードする方式としてはよく用いられているようなのですが。


まあ、元々が非ASCIIのシングルバイト文字(すなわち7bitではなく8bit)用のエンコードですから。

引用:

ちなみに、今回問題になっているのは、あるアプリケーションが、Shift_JIS の Q エンコードを用いていて、かつ文字化けが発生してしまっている (正式には Subject が途中で切れてしまい、本文に乱入してしまっている) ような状況だったので、そのような実装をしているアプリケーション側に問題があるのではないかと思って質問させていただきました。まあ、仕様上は間違いではないんでしょうけど・・・。


多分、そのアプリケーションは日本製ではないですよね?もしくは、開発の多くを海外に丸投げしているとか…。

実際のところは、単純にアプリケーションがマルチバイトコードセットを考慮していないだけだと思います。

おっしゃるとおり、Qエンコーディングを使った場合はBASE64を使うより、非効率になるだけであり、間違いではないのですが、日本語を通すことを意識してはいないでしょうから、そのうちにどこかで問題が表面化すると思います。

前に述べた、とあるサイトも日本語がたまたま通っただけで、日本語を通すことを意識していた訳ではないので、Qエンコーディングだっただけですから。

アプリケーションに対して、たとえば顧客としてリクエストを出せる立場なら、意識して日本語のサポートをおこなわせるようにしたほうが良いです。

問題が発生しても最悪の場合、「日本語環境で問題が発生した?我々のアプリケーションは日本語をサポートしてるなんて一言も言ってないよ?」なんてことを言われかねませんから…。

[ メッセージ編集済み 編集者: 流しのエンジニア 編集日時 2006-02-13 22:35 ]
1

スキルアップ/キャリアアップ(JOB@IT)