パスワードを忘れた? アカウント作成
この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。

日本語のe-mail、ISO-2022-JP以外のcharsetを使うのは是か非か」記事へのコメント

  • Mozilla系のMUAはRFCに近い実装ですが Outlook Expressは
    最初に検出したエンコードで全体をデコードするため
    subjectのエンコードと異なるcontent-typeでは問題がでるなど、
    MIMEの扱いはぼろぼろです。

    さらにIMAPでは検索などでサーバ側でもMIMEを扱うためこちらの対応状況も問題になります。

    メーリングリストでも、アーカイブ作成時の変換やSubjectの書換などで
    エンコード/デコードが必要となります。

    これらについて、現状ではiso-2022-jpであることや、
    メール全体が同じエンコーディングであることを仮定したハックによる
    対応が行われているものが散在し、Content-Typeに従った対応が
    全般に渡ってされていると仮定するのは無理があります。

    • by Anonymous Coward
      > Mozilla系のMUAはRFCに近い実装ですが Outlook Expressは
      > 最初に検出したエンコードで全体をデコードするため
      > subjectのエンコードと異なるcontent-typeでは問題がでるなど、
      > MIMEの扱いはぼろぼろです。

      まず、Mozilla系を持ち上げてOEをコケ下ろす前に、そういう変な
      メールを作成するメールソフトを糾弾すべきじゃないかと思うのは
      私だけでしょうか?

      タレコミ人のケースでも、テキストエディタで書いたものを
      貼り付けたら別の文字コードで混ざったんですよね。
      Windowsではあまり考えられないケースですが、Linuxとか使ってた
      ということではないですか?

      タレコミ人の書きようも、「そんなの読めないほうが悪いんじゃね?」
      とでも言いたげに感じられるし。
      • そういう変なメールを作成するメールソフト

        というのが、まさにOutlookなのが問題なのですよ。

        • 添付テキストファイルのエンコーディングはShift_JISそのままで送ってくる(しかもcharset指定なし)
        • 添付ファイル名に日本語を使うと独自形式でエンコードしてくる

        ……で、しかも、相手が同様の対応をすることを期待するから:

        • 添付テキストファイルのcharset指定を無視し、Shift_JISを勝手に想定して文字化けする
        • RFC2231形式のファイル名指定を理解できないのでファイル名が化ける

        ……ということになるわけで。はあ。

        親コメント
        • by Anonymous Coward
          「参考になる」なんて付いちゃってますが。

          テキストファイルを添付するときと、テキストエディタで書いたテキストを
          本文に貼りつけるのとでは話の次元が違います。
          本文に異なる文字コードで混ざると言っているのだから。

          ちなみにOutlookの場合、ShiftJISのテキストファイルを添付すると

           Content-Transfer-Encoding: quoted-printable

          と付けられて、7bitに変換されてます。
          ShiftJISそのままではないですね。

          添付ファイルなので本文の表示とは無関係で文字化けには影響しませんし、
          添付ファイルなので、あとは取りだしたメールソフトやOSがこのファイルを
          どう処理するか次第。

          補足すると、Outlookでも設定を変えればBASE64に変換して添付することも
          もちろんできます。

          それでも他のメールソフトより変ですか?

          #正しい情報でも、MS製品バッシングに対する反論はプラスモデされませんねえ。
          • 曖昧な書き方をしていたので補足します。

            ShiftJISそのままではないですね。

            Content-Transfer-Encodingの話ではなく、Content-Typeの話をしたつもりでした。 つまり、Outlookでは、送るときは

            • 本文はiso-2022-jpのcharsetで送ってくる。Content-Typeのcharset指定も正しい(これは良い)
            • 添付ファイルはContent-Type: text/plainでcharset指定がない。中身はShift_JISそのまま

            という動作をするのです。また、受け取るときは

            • 添付ファイルは、テキストファイルの場合、Content-Typeのcharset指定のいかんにかかわらず、そのままメモ帳で開こうとする(のでISO-2022-JPで送ると、charsetが正しく指定されていても化ける)

            のです。

            • 送信時は、テキストファイルを添付するときは、charset指定をつける
            • 受信時は、Content-Type: text/plainのときは、charset指定を見て必要ならコード変換する

            という動作をしてくれるなら文句は言いません。

            本文に異なる文字コードで混ざると言っているのだから。

            これについては #1494067 [srad.jp]参照。

            親コメント
            • 手元のOutlook(2003)で試してみましたが、いちいち実際と違うようですが?

              > 曖昧な書き方をしていたので補足します。
              > ShiftJISそのままではないですね。
              > Content-Transfer-Encodingの話ではなく、Content-Typeの話をしたつもりでした。つまり、Outlookでは、送るときは

              ですから、文字コードは知らんけどquoted-printableで送る、という
              印になっているのですから、そんなに問題なの?って書いたつもりでした。

              > □ 添付ファイルはContent-Type: text/plainでcharset指定がない。中身はShift_JISそのまま

              何度も書くようですが、
              Content-Transfer-Encoding: quoted-printab
              • たびたび誤解を招く書き方をしてすみません。添付ファイルのContent-Typeで指定されるべき「文字エンコーディング」と、それを伝送路上に流すときのContent-Transfer-Encodingとを分離して、前者の話だけをしたつもりでした。私の書き方が足りなかったので、元ACさんはContent-Transfer-Encodingの話だと思われたのでしょう。

                Outlookは、Shift_JISの添付ファイルを送る際に、Content-Transfer-Encodingをquoted-printableにしているということですね。それはいいのです。8bitテキストを生で伝送路上に流すべきではない、というのもいいのです。

                JISで書いたテキストを添付して送ると、メモ帳で化けるという話ですか?
                それは、Outlookのお仕事ですか?

                Outlookのお仕事だと思います。少なくとも、Content-Type: text/plain; charset=iso-2022-jpと添付ファイルのヘッダーに書いてあったのであれば、ファイルを「開く」または「保存する」ときにはコード変換すべきでしょう。送ってくる相手はShift_JISやUTF-8で送ってくれるとは限らないわけですから。

                いくらテキストデータとはいえ、本文とは別に添付するのですから、元の通りに
                受信者が復元できればいいですし、そうすべきです。

                たとえば、Windowsでは改行がCRLFですけれどUNIXではLFだったりするので、テキストファイルであっても、場合によっては、最低限のデータ変換は必要になるのです(ネットワークに流すときの改行はCRLFにする必要があります)。受信側のOSがUNIXで、ユーザーがEUC-JPの文字エンコーディングを使っているのであれば、受け取ったユーザーは、送られてきたテキストファイルは改行をLFにして、文字エンコーディングはEUC-JPにしたいと思うでしょう。逆に、Windowsで受信するときには、ユーザーは、テキストファイルは改行をCRLFにして、文字エンコーディングはShift_JISにして欲しいと思うでしょう。

                もし、勝手な変換をされたくないなら、Content-Typeをtext/plainではなくapplication/octet-streamにすべきなのです。

                親コメント
              • by Anonymous Coward
                どんなに丁寧に説明しても、どうしても「Outlookには問題がある」ということに
                したいという固定観念があるようですね。

                > たびたび誤解を招く書き方をしてすみません。

                いいえ、私が誤解しているのではなく、あなたが誤解しています。

                >添付ファイルのContent-Typeで指定されるべき「文字エンコーディング」と、それを
                > 伝送路上に流すときのContent-Transfer-Encodingとを分離して、前者の話だけをしたつもりでした。

                それではだめです。
                もともとは、一つの本文テキストに複数の文字コードが混ざる話でした。
                別次元の添付ファイルに関して変だ、ということ自体が間違っています。

                >
        • by Anonymous Coward

          今やってみましたが、Outlook 2003からUTF-8のテキストファイルを添付して送信し、OSXのMail.appで開きましたが普通に開けます。
          テキストファイルのエンコーディングはUTF-8のままです。
          添付ファイルのnameはiso-2022-jpでエンコードされており、
          ファイル自体は
          Content-Transfer-Encoding: base64
          Content-Disposition: attachment;
          です。

          何が問題なんでしょ?

          • 添付ファイルのContent-Typeはどうなっていましたか?

            Content-Type: text/plain; charset=utf-8

            ならいいんですが、往々にしてcharsetが付いていないのですよ。

            添付ファイルのnameはiso-2022-jpでエンコードされており、

            nameパラメタにiso-2022-jpがそのままエンコードされていたのでしょうか。 それとも、=?ISO-2022-JP?B?....?=みたいな形式になっていたのでしょうか。 前者ならば規約違反です。

            Content-Disposition: attachment;

            このヘッダーフィールドにfilenameパラメタは付いていませんでしたか? RFC2231では、ファイル名はContent-Dispositionにfilenameパラメタで付けることになっているのです。

            親コメント
            • by Anonymous Coward

              とりあえず、どのバージョンのOutlookの話をしているか(SPも含めて)はっきりした方がいいぞ。バージョン間やSP前後での非互換は日常茶飯事だからな。

              あと、Outlook Expressの話じゃないよな? OutlookとOutlook Expressは、JavaとJavascriptくらい違うぞ。

            • by Anonymous Coward

              >添付ファイルのContent-Typeはどうなっていましたか?
              >>Content-Type: text/plain; charset=utf-8
              >ならいいんですが、往々にしてcharsetが付いていないのですよ。

              ファイルの文字コードを正確に判断できるアプリケーションを私は一つも知りません。
              Outlookは添付ファイルの中身が何かなんてわからないんじゃないですか?
              Content-Type: text/plain;は単に拡張子がtxtだからつけたんでしょう。

              ちなみに、notepad.exeをnotepad.txtにリネームして添付してもContent-Type: text/plain;になります。

              本当にOutlookの問題ですか?

              >nameパラメタにiso-2022-jp

普通のやつらの下を行け -- バッドノウハウ専門家

処理中...