送信メールの文字コードをShift JIS固定にするには?
最近、わたしの送ったメールが文字化けして見えない、と多くの苦情が寄せられています。どうもUnicodeで送られた場合に読めないことがわかりました。そこで、送る時には、「メッセージ」メニューの「テキストエンコーディング」から毎回Shift JISにテキストを変換してから送るようにしています。でも、Shift JISにいつでも固定して送るように設定できれば、このようなわずらわしいことをしなくてもすみます。どなたか方法をご存知でしょうか?
最近、わたしの送ったメールが文字化けして見えない、と多くの苦情が寄せられています。どうもUnicodeで送られた場合に読めないことがわかりました。そこで、送る時には、「メッセージ」メニューの「テキストエンコーディング」から毎回Shift JISにテキストを変換してから送るようにしています。でも、Shift JISにいつでも固定して送るように設定できれば、このようなわずらわしいことをしなくてもすみます。どなたか方法をご存知でしょうか?
# 話しとは全然関係ありませんが、念のため訂正(^^;;;
> MicrosoftのOEも、FireFoxも、
FireFoxはWebブラウザぢゃん! Thunderbirdの間違いです、はい。
usadi3さんへ
>で、Shift-JISでも送信出来てしまう、と。。。。
メールシステムで日本語が通るようになった頃に、文字コードの制限(MIMEの規約だったか)を調べ、その際、シフトJISは使うなと書いてあったような記憶があります。シフトJISは、単に、JISコードとの変換が容易ということで採用されたもので、7ビット系の制御コードとバッティングすることから、至極当然かと納得しました。
バグでしょうね。
まさかと想うほどの想定外です。
ご教示、感謝します。
Mail.appのデフォルトがISO-2022-JPに変更されている,とのご指摘ですか?うちではそうはなっていないようなのですが.
Mail.app 2.1 (752/752.2) ですが,初めて起動してすぐに
defaults read com.apple.mail
を調べてみると,NSPreferredMailCharset は出てこなくて,送信メールのエンコーディングは英数字ばかりのときはUS-ASCII,日本語のときはUTF-8になります.デフォルトのエンコーディングをISO-2022-JPにしたければ,依然として "標準エンコーディングの設定は?" #15, 2005/05/01 7:46pm の設定(http://docs.info.apple.com/article.html?artnum=301986 と同じです)は必要なのでは?
> Mail.app 2.1 (752/752.2) ですが,初めて起動してすぐに...
確認しましたらNSPreferredMailCharsetはないですね。:-)
# 自分でつけたのすっかり忘れている...
>どういう訳か、Mail.appでは送信前にも指定出来てしまうんですよ。で、Shift-JISでも送信出来てしまう
初めからこういう仕様(送信時にもエンコーディングを指定可能)なのでは?
というのも、送信前に次のようなアラートが出るからです。和文メッセージに誤って欧文のエンコーディングを指定して送信しようとした時などに。:
「テキストエンコーディングが正しくありません。
メッセージ内の一部の文字を”欧米(ISO Latin 1)” テキストエンコーディングに変換できませんでした。"テキストエンコーディング" メニューから別のエントリーを選択して下さい。」→ 〈メッセージを編集〉ボタンへ
受信メッセージに対して試しに様々なテキストエンコーディングを指定してみても、上のようなアラートは出ません。送信メッセージ専用だと思います。
(usadii3さんのシッポにつかまって便乗コメントでした。)
> はにさんに書いているように、どのようなコードで書いても、ネットに入る時には、JISになっていますから。
私はそんなこといってません。Shift JIS なら Shift JIS でネットに出て行きますし、utf-8 なら utf-8 でネットに出て行きます。その上で、Shift JIS は機種依存コードが含まれているので使うべきでない、といっているのです。utf-8 なら、パソコン上で使える文字ならどれでも使えます。JIS は、文字化けはしないけど、使える文字種が大変少ないです。だけど、どうしても文字化けがいや、相手が utf-8 を受け取れない、のなら、JIS にせざるを得ません。Shift JIS で間に合うのなら、JIS にしても差し支えないはずです。Shift JIS のうち、JIS で表せる文字以外は機種依存と思っていいですから。
文字コードを固定する方法は、既にピッピさんが文書を紹介されてますので、それに従えばいいと思います。ただ、こうしていても、utf-8 になってしまうことがある、という書き込みもあったように思います。
自分のところでテストした限りでは、(JIS の文字種だけの場合)、特に指定してませんが、自動で、iso 2022 jp になりますけどね、、、
Sariさんへ
>初めからこういう仕様(送信時にもエンコーディングを指定可能)なのでは?
書いていただいた状況ですと、そのようですね。
rtfとhtmlが入ってきたせいで拡張された機能じゃないかと理解しました。
私は、rtfもhtmlも絶対に使わないので、全く気付きませんでした。
電子メールシステムは文字コードが絡むので、難しいですね。
> 自分のところでテストした限りでは、(JIS の文字種だけの場合)、特に指定してませんが、自動で、iso 2022 jp になりますけどね、、、
ぴっぴさんと小生(hrs)のやりとりにありますように,defaults write ... で指定しなければ UTF-8 になります.はにさんも過去に指定なさったのでは?
> ぴっぴさんと小生(hrs)のやりとりにありますように,defaults write ... で指定しなければ UTF-8 になります.はにさんも過去に指定なさったのでは?
重複しますが、
hrsさん御本人がリンクを貼っているトピックを最後まで読まれれば
分かると思います。
http://discussions.info.apple.co.jp/WebX?128@@.efd7768
●Macを日本語の環境で使用している場合(標準テキスト)
半角英数字のみのメールを送信 US-ASCII
日本語のメールを送信 ISO-2022-JP
機種依存文字等を含むメールを送信 UTF-8
●Macを英語の環境で使用している場合(標準テキスト)
半角英数字のみのメールを送信 US-ASCII
日本語のメールを送信 UTF-8
Macを英語の環境で、日本語のメールを送信するとUTF-8になり、
送信先によってはISO-2022-JPにしないと文字化けすることがあります。
その為、ターミナルでMail.appの初期設定ファイルを操作し、
強制的にISO-2022-JPでメールを送信する方法が下です。
(ぴっぴさんも英語環境で使用されているみたいです)
「Mail から Web Mail や携帯電話に送った送信メールが文字化けする」
http://docs.info.apple.com/article.html?artnum=301986
少し調べたところ、こんな記事がまとめられていました。
参考にあげておきます。
http://www.mew.org/Newsletters/
http://www.atmarkit.co.jp/fnetwork/rensai/netpro03/netpro01.html
(基本は7ビット)
>Shift JIS なら Shift JIS でネットに出て行きますし、utf-8 なら utf-8 でネットに出て行きます
SJISでエンコードした場合、実際には"quoted priontable"で7bit化されますし、UTF-8ならBase64で7bit化されます。Tedさんが「ネットに出て行くときはJIS」と仰られているのは、「最終的にはどのエンコード方法であっても7bit符号化されている」ことと勘違いされているように思いますし、usadii3さんやはにさんは、この7bit符号化について触れておられず、文面からはSJISやUTF-8がそのまま送られるようにとれてしまいます。
"quoted printable"が正しい符号化なのかの議論はあるかもしれませんが、大部分の日本語メーラはSJISエンコードを正しく解釈出来ます。私は、基本的のどのエンコード方法を用いても、受信側メーラがそれを解釈出来るのなら問題ないと考えています。
> ただ、こうしていても、utf-8 になってしまうことがある、
> という書き込みもあったように思います。
実はこれが一番の問題だったりします。
Mailの場合デフォルトをISO 2022-jpにしていても、送られてきたメールに機種依存コードが含まれているときに、その文をそのまま引用して返事を書いてしまうと自動的にutf-8に文字コードが変更されてしまい、相手側がutf-8に対応していないと文字化けしてしまうんです。
よくやり取りする相手ならば、機種依存文字を使わないでとかメーラーを新しいのに換えてとか言えるのだけど、それほどやり取りしないヒトだといちいち指摘してられないし、機種依存文字をメールに平気で使うヒトに限って古いメーラーをそのまま使っているというジレンマ・・・
しかも普段は何の問題もなくメールのやり取りをしているのに、ある拍子にメールが文字化けしていると指摘を受ける・・・ 数が多くなるとかなりのストレスです。
文字コードを変更する場合には、一言ダイアログを入れてくれるなどするか、自動で変える・変えないを設定で変更できるようにするなどしてくれないかな・・・と思う今日この頃です。
ぽん太さん,ご指摘ありがとうございます!すっかり忘れていました.そうです,英語が最優先だとUTF-8になるのでした.(リンクを張ったトピ主のダグさんも,解決策をみつけたlaylaさんも英語環境でした.)
はにさん,濡れ衣を着せてすみません.陳謝!
> 7bit符号化について触れておられず、文面からはSJISやUTF-8がそのまま送られるようにとれてしまいます。
# 話しが難しくなるので敢えて書かずにいましたが、言われてみればちゃんと書かなきゃダメですね。ご指摘感謝です。
> SJISでエンコードした場合、実際には"quoted priontable"で7bit化されますし、UTF-8ならBase64で7bit化されます。
うぃ。実際には確かに問題ないようにMail.appが7bit符号化してから送信しますが、実際の動作はちょっと違うようです。Subject部はquoted-printableで7bit符号化されていますが、本文はBase64で7bit符号化されています。
ただのテキスト部をわざわざBase64化されている所をみても、Mail.appとしても不本意なエンコードと言う事も出来るのではないでしょうか? 8bitなので、するしかないんだ、と。Base64やquoted-printableで正しく7bit符号化出来て、相手先で正しくデコード出来ても、やはりこれはイレギュラーだとは言えないでしょうか?
面倒くさいのは受信した側で、iso-2022-jpのメールとShift-JISのメールが混在するわけです。多くは問題ありませんが、これ、例えばMUAを別なものにする為にメールデータをエクスポート/インポートした時に変になったりする事が、MUAによってはあります。そこまで考える必要があるのか、とも思いますが、どっちにしてもShist-JISを使うのは一般的で無い事はY.Kawabeさんご自身も十分に理解されているハズと思います。
特殊なもので無い限りは(ただのテキストだけの本文なら)、本来もともと7bitなiso-2022-jpを使えばよいだけの話ですし、ネチケットとしてもテキストだけならiso-2022-jpで、というのは未だ有効だと思うのですが。
# それとこれは完全に私の感覚ですがヘッダに
# Content-Type: text/plain; charset=SHIFT_JIS
# なんてつくのはカッコ悪すぎと思うというのも。。。
> SJISでエンコードした場合、実際には"quoted priontable"で7bit化されます
本当ですか?
Mail.app で Shift JIS メールを作って、確かめた限り、Content-Transfer-Encoding: base64 ですが。
> usadii3さんやはにさんは、この7bit符号化について触れておられず、文面からはSJISやUTF-8がそのまま送られるようにとれてしまいます。
エンドユーザの立場からすれば、メールシステムは透過的なので、途中でどういう仕組みになっているかについては、強いて触れる必要はないのでは?
そういう立場から触れませんでした。
電話の通信をエンドユーザに説明するときに、取り敢えずは、途中はパケット通信になっているとか、光通信になっているとか、マイクロウェーブになっているとか、衛星通信になっているとか、そんなことはどうでもいいことです。エンドユーザに取って大事な事は、電話機に向かって、ダイアルを回すとかボタンを押すとかして、「ハーイ」といえば、地球の彼方の電話機の向こうの相手に「ハーイ」と聞こえる、それだけで十分です。
送信メールの文字コードをShift JIS固定にするには?