- - PR -
MailTo:で日本語が文字化けする
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2003-12-18 10:13
@PageディレクティブのcodePage属性。。。932か、x-sjis
ちがうかな? | ||||||||
|
投稿日時: 2003-12-18 10:21
Webアプリではないんですが…この前Winアプリ作っているときに。
OEだと文字化けしませんでした。 というか「URI を Shift-JIS で Escape」してもいいんですかね…ほんと。 ちなみに
だと駄目です。 ※後半追加 [ メッセージ編集済み 編集者: ya 編集日時 2003-12-18 10:40 ] [ メッセージ編集済み 編集者: ya 編集日時 2003-12-18 10:41 ] | ||||||||
|
投稿日時: 2003-12-18 10:25
Accessさん
単に、 <head> <meta http-equiv="Content-Type" content="text/html; charset="Shift_JIS"> </head> を追加してはどうでしょうか? | ||||||||
|
投稿日時: 2003-12-18 11:02
どもほむら@小言モードです。
-------- ところでその問題の結果はいったいどのような結果が返ってきていたのでしょうか? 基本的に、うまくいきません。ダメでした。といわれても回答者は何も想像できません。 また、同じでしたも同様にその前の段階がわからないのでなんともいえませんね。 確認に使用しているメーラーとブラウザは何を利用していたのでしょうか? 結果として出力されるページ(ブラウザのソース表示)でどのようになっていたのでしょうか? もしよければ同様のケースに出くわした人の為にも、 どんなことが起こったのか、又それに対してどのような修正を行ったのか その記述があるだけでもたとえ、解決はできなくても スレッドとしての価値は高くなると思います。 | ||||||||
|
投稿日時: 2003-12-18 12:15
ほむらさんの意見には同意です。
で、こちらでも現象を確認しましたが、例えば 「subject=あいう」 としたときに化けて出てくる文字列は 「縺ゅ>縺」 ですか?だとすればこれはutf-8で書かれたものをshift-jisとして読んでいます。 なので少なくとも、「shift-jisで書かれています」といった記述をしても だめだと思います。 >@PageディレクティブにresponseEncoding="shift-jis" これで基本的にはshift-jisエンコーディングで出力されるはずです。うちの IE6+OUTLOOKではちゃんと件名に「あいう」と入りました。でもこれよりは Web.configを以下のように設定すればWebアプリ全体に適応されます。 <globalization responseEncoding="shift-jis" requestEncoding="shift-jis" /> (レスポンスとリクエストのエンコードは合わせたほうがいいと思います) あと、リンク上にマウスを置いたときはちゃんと「subject=あいう」と出ませんか? ブラウザは、あるところまではutf-8でも読めるが、utf-8で読めない(渡せない?) 箇所があるみたいです。ファイルダウンロードのダイアログでも似たようなことが おきますよね確か↓ http://support.microsoft.com/default.aspx?scid=kb;ja;436616 (UrlEncodeだけしてもメール件名は文字化けしたままでした) | ||||||||
|
投稿日時: 2003-12-18 12:58
簡単な実験したので追加させてもらいます。
先ほどの例ですと、プログラム側からメーラーを起動しようとしたわけですが、このときはbodyを指定する必要があり(スペースとかが入る)エスケープが必須であったわけです。そのためUriクラスを使って普通にエスケープしたわけですが、文字化けが発生しました。それで独自にShift-JISでエスケープをしてやると(つまり先ほどのコード)うまくいったわけです。 で、この辺を踏まえてHTMLで少し実験してみました。meta(文字コード指定)とaタグのみの簡単なHTMLをつくってクリックしてメーラーを起動したときに文字化けするかどうかの結果です。 環境 IE 6.0, OutlookExpress, WindowsXPPro SP1 結果 1. HTMLファイル=UTF-8, URI Escapeなし 文字化け 2. HTMLファイル=UTF-8, URI Escape(標準)あり 文字化け 3. HTMLファイル=UTF-8, URI Escape(SJIS)あり 文字化けしない 4. HTMLファイル=Shift-JIS, URI Escapeなし 文字化けしない 5. HTMLファイル=Shift-JIS, URI Escape(標準)あり 文字化け 6. HTMLファイル=Shift-JIS, URI Escape(SJIS)あり 文字化けしない ※URI Escape(標準)とはUriクラスにエスケープしないUri Stringを渡し、エスケープしたもの。 考察 ・Uri はメーラー(OE)からはShift-JISでエンコードされていると判断すると推測できる。 ・Uri がエスケープされている場合、メーラー(OE)はShift-JISでエスケープを解釈すると推測できる(いったんバイト配列に直してから解釈しているか)。 結論 解決策としては ・HTML自体をShift-JISで生成し、URIをエスケープしない(条件として含みたい文字列に改行など変な文字列が入らないこと)。 ・URIを独自にShift-JISでエスケープする(条件として長さ制限ぐらい?)。 C#ですいませんが…
こんな感じでうまくいかないでしょうか?でもOE以外のメーラーの動作とかも考えると頭痛い問題です…。 [ メッセージ編集済み 編集者: ya 編集日時 2003-12-18 13:04 ] [ メッセージ編集済み 編集者: ya 編集日時 2003-12-18 13:11 ] [ メッセージ編集済み 編集者: ya 編集日時 2003-12-18 13:12 ] [ メッセージ編集済み 編集者: ya 編集日時 2003-12-18 13:16 ] [ メッセージ編集済み 編集者: ya 編集日時 2003-12-18 13:19 ] | ||||||||
|
投稿日時: 2003-12-18 16:09
ども、ほむらです。
僕の意見に反応して頂いたようでうれしく思うとともに べる氏とya氏に感謝します。 (きっといろいろな実験をしていただけたのですよね) ------- 両氏の意見を参考して書かせていただくと 可能性として、UTF-8で送信(リクエスト)されたデータを 文字コードSHIFT-JISとして表示しているからということになるのでしょうか。 回避策としては 1.レスポンスとリクエスト時の文字コードを一致させる(べる氏) 2.リクエストデータをいったんSHIFT-JISに変換してから その変換したデータを自分でURLエンコードした形で出力する(ya氏) ですか。。 文字コードの問題って難しいですよね。 #まるで別件ですがXSLTでHTMLを出力した時に文字コードではまったことがあります^^;;; [ メッセージ編集済み 編集者: ほむら 編集日時 2003-12-18 16:10 ] | ||||||||
|
投稿日時: 2003-12-18 20:39
現状のIEでは、文字コードを一致させるといっても、レスポンスとリクエストを 両方utf-8にすると、このような現象は回避できないと思います。 レスポンスをshift-jisにするならリクエストもshift-jisにした方が無難ではないか という意味で書いたのです。 #そういえば他のブラウザでは実験してなかったです、この手の現象。 |