C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: メール件名(Subject)の文字化け


(過去ログ 68 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■39698 / inTopicNo.1)  メール件名(Subject)の文字化け
  
□投稿者/ ベジータ (17回)-(2009/08/12(Wed) 15:04:48)

分類:[ASP.NET (VB)] 

メール件名のSubjectの文字化けがします。
Dim sourceEncoding As System.Text.Encoding = System.Text.Encoding.UTF8
Dim bytesData As Byte() = sourceEncoding.GetBytes(mailtitle)
Dim strs_jis As String
strs_jis = System.Text.Encoding.GetEncoding(932).GetString(bytesData)
msg.Subject = strs_jis
UTF8---->Shift_JISにしてみましたが文字化けします。本文は文字化けしないのに、件名は何故文字化けするのでしょうか?

引用返信 編集キー/
■39704 / inTopicNo.2)  Re[1]: メール件名(Subject)の文字化け
□投稿者/ επιστημη (2105回)-(2009/08/12(Wed) 15:14:18)
επιστημη さんの Web サイト
> UTF8---->Shift_JISにしてみましたが文字化けします。本文は文字化けしないのに、件名は何故文字化けするのでしょうか?

encodingが異なるからでしょう。

subjectはフツーMIME-encodeされてるわけですが。
↓たとえばこんなの。
?iso-2022-jp?B?UkU6IEJvRhskQiVNJT8kSCQrGyhC?
この場合
iso-2022-jp(JIS)で書かれた文字列をB(BASE-64)かけて
"UkU6IEJvRhskQiVNJT8kSCQrGyhC"となってるわけで、
元に戻すには BASE-64 decode の後 JIS→Unicode せにゃ
ならんです。

引用返信 編集キー/
■39709 / inTopicNo.3)  Re[1]: メール件名(Subject)の文字化け
□投稿者/ Lisa (8回)-(2009/08/12(Wed) 15:48:17)
No39698 (ベジータ さん) に返信
ベジータ様、私も先日メール発信のプログラム作りました。
メールのSubjectの日本語はJISにエンコードするみたいです。
参考になれば見てみてください。
http://bbs.wankuma.com/index.cgi?mode=all&namber=39462
引用返信 編集キー/
■39711 / inTopicNo.4)  Re[2]: メール件名(Subject)の文字化け
□投稿者/ みきぬ (604回)-(2009/08/12(Wed) 16:12:58)
よくわからんけど、メールを送るプログラムを作ったはいいが、あるメールクライアントで読もうとすると文字化けしたってこと?

とりあえず、先人が苦労した結果を貼っておきます。
http://d.hatena.ne.jp/takakuro/20060816/1157587913
引用返信 編集キー/
■39714 / inTopicNo.5)  Re[3]: メール件名(Subject)の文字化け
□投稿者/ ベジータ (18回)-(2009/08/12(Wed) 16:59:09)
Dim bytesData As Byte() = System.Text.Encoding.GetEncoding("iso-2022-jp").GetBytes(mailtitle)
msg.SubjectEncoding = System.Text.Encoding.GetEncoding("iso-2022-jp")
msg.Subject = System.Text.Encoding.GetEncoding("iso-2022-jp").GetString(bytesData)
参考URL
http://techbank.jp/Community/blogs/mymio/archive/2009/01/17/4414.aspx
でできました。件名(Subject)はメールサーバーの指定によるのか?
本文は特にエンコード変換しなくても文字化けしない
解決済み
引用返信 編集キー/
■39721 / inTopicNo.6)  Re[4]: メール件名(Subject)の文字化け
□投稿者/ はつね (1059回)-(2009/08/12(Wed) 18:09:03)
はつね さんの Web サイト
No39714 (ベジータ さん) に返信
> でできました。件名(Subject)はメールサーバーの指定によるのか?
> 本文は特にエンコード変換しなくても文字化けしない

メールの件名は、iso-2022-jpでエンコードする事が決まっています。
よって、メールクライアントと名乗るならば、iso-2022-jpでエンコードされたメール件名は
ちゃんとデコードしてくれます。
決してメールサーバの指定ではありません。


解決済み
引用返信 編集キー/
■39723 / inTopicNo.7)  Re[5]: メール件名(Subject)の文字化け
□投稿者/ Lisa (12回)-(2009/08/12(Wed) 18:27:34)
2009/08/12(Wed) 18:45:54 編集(投稿者)

No39721 (はつね さん) に返信
> ■No39714 (ベジータ さん) に返信
>>でできました。件名(Subject)はメールサーバーの指定によるのか?
>>本文は特にエンコード変換しなくても文字化けしない
>
> メールの件名は、iso-2022-jpでエンコードする事が決まっています。
> よって、メールクライアントと名乗るならば、iso-2022-jpでエンコードされたメール件名は
> ちゃんとデコードしてくれます。
> 決してメールサーバの指定ではありません。

はつね様、皆様
> メールの件名は、iso-2022-jpでエンコードする事が決まっています。
なら、なぜこの問題をSystem.Net.Mailで対応してくれないのでしょうか?
本文は大丈夫なのに、なぜSubujectだけ個別にエンコードのコードを入れなければならない
のでしょうか?日本は世界の中でアメリカに次ぐIT利用国と聞いてますが?

引用返信 編集キー/
■39755 / inTopicNo.8)  Re[6]: メール件名(Subject)の文字化け
□投稿者/ もりお (36回)-(2009/08/13(Thu) 02:30:52)
No39723 (Lisa さん) に返信
>>メールの件名は、iso-2022-jpでエンコードする事が決まっています。
> なら、なぜこの問題をSystem.Net.Mailで対応してくれないのでしょうか?

iso-2022-jp は、あくまで日本語メールでの標準的なエンコードです。
これ以上の対応は難しいのではないかと思います。


> 本文は大丈夫なのに、なぜSubujectだけ個別にエンコードのコードを入れなければならない
> のでしょうか?

メールのヘッダーにはコントロールコードを含めることが出来ないためかと思います。
http://www.kanzaki.com/docs/jis-mail.html


> 日本は世界の中でアメリカに次ぐIT利用国と聞いてますが?

UTF-8 にさっさと移行しない辺り、保守的な面もあるんではないかと思います。
引用返信 編集キー/
■39760 / inTopicNo.9)  Re[6]: メール件名(Subject)の文字化け
□投稿者/ はつね (1060回)-(2009/08/13(Thu) 09:55:13)
はつね さんの Web サイト
No39723 (Lisa さん) に返信
>>メールの件名は、iso-2022-jpでエンコードする事が決まっています。
> なら、なぜこの問題をSystem.Net.Mailで対応してくれないのでしょうか?

USな人たちには関係ないことだからだと思います。

日本製のSMTPコンポーネントとかでは対応していますね。
http://naka.wankuma.com/site/soft/WankumaNetMail/default.htm
http://www.grapecity.com/japan/dotnet/p7_370.htm


> 本文は大丈夫なのに、なぜSubujectだけ個別にエンコードのコードを入れなければならない

Subjectだけではなくヘッダはすべてですね。
これはRFCで決まっているからです。


> のでしょうか?日本は世界の中でアメリカに次ぐIT利用国と聞いてますが?

なのでヘッダに日本語を入れられるようにRFCで規定できたんでしょうね。

引用返信 編集キー/
■39763 / inTopicNo.10)  Re[7]: メール件名(Subject)の文字化け
□投稿者/ επιστημη (2108回)-(2009/08/13(Thu) 10:19:57)
επιστημη さんの Web サイト
2009/08/14(Fri) 11:34:56 編集(投稿者)

歴史的経緯てゆーのかな、もともとメールは本文も制御部(ヘッダ)も
7bit-asciiに納めるのがキマリなわけです。英語だけで済むならそれで
十分ですので。これを日本語に適用するとなると、7bit-asciiに納まる
文字コードっつーと唯一JIS(iso-2022-jp)てことになるわけっす。

Subjectはヘッダに含まれます。なのでSubjectは7bit-asciiでなくちゃならないし、
しかもヘッダにはescape等のコントロール文字があっちゃいけません。
# JISは7bit-asciiの範囲内だけどコントロール文字を含みます。
そこでMIME(こんなの→) ?iso-2022-jp?B?UkU6IEJvRhskQiVNJT8kSCQrGyhC?
が使われることになりました。MIME形式はその中に文字コード種別を打ち込む
んだから、たとえば ?shift-jis?B?UkU6IEJvRhskQiVNJT8kSCQrGyhC?
とかやりゃSubjectにシフトJISが使える"はず"。

こんなヘッダをもらって正しく復号できるかは着信側のメール・アプリケーション
次第です。メール・アプリがシフトJISを処理できないとバケバケになります。
相手が誰であろうと(どんなメール・アプリ使っていようと)正しく読んでもらえる
文字コードは、結局昔々から使われているJIS(iso-2022-jp)がいっちゃん無難
てことになるわけですねー。

引用返信 編集キー/
■39768 / inTopicNo.11)  Re[8]: メール件名(Subject)の文字化け
□投稿者/ Lisa (15回)-(2009/08/13(Thu) 10:49:35)
皆様、メールヘッダのエンコードの背景についての説明、ありがとうございます。
理由・背景が良くわかりましたし、2バイト文字文化圏の宿命と感じました。
英語圏(1バイト文字文化圏)の人は何の問題もないのですものね。
これからは納得して、メールはJISエンコードで利用します。
解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -