- PR -

外国windows(English)から日本のサイトを表示した時の文字化けについて

1
投稿者投稿内容
みきこ
会議室デビュー日: 2004/10/15
投稿数: 4
投稿日時: 2004-10-15 08:17
みきこと申します。
会議室を間違えて投稿してしまったので、再び投稿させていただきます。

shift_jisで作成したシステムに、windows(English)、IE5.0から接続した場合、日本語がすべて???で表示されてしまいます。同じものが日本のIEから接続するとちゃんと表示されます。
 ただし、Apache/htdoc下のhtmlファイル(shift_jisの指定あり)のページは文字化けしません。

 環境は以下のとおりです。

 Apache Version 1.3
 Apache JServ 1.1.2
 jdk1.2.2
 webmacro -0.95

 webmacroのWMファイルには、

<html lang="ja">
<head>
<meta http-equiv="content-type" content="text/html;charset=Shift_JIS">
が入っています。

 どなたかご教授のほどよろしくお願いいたします
さく
会議室デビュー日: 2004/09/01
投稿数: 13
投稿日時: 2004-10-15 13:15
引用:

shift_jisで作成したシステムに、windows(English)、IE5.0から接続した場合、日本語がすべて???で表示されてしまいます。同じものが日本のIEから接続するとちゃんと表示されます。



単にフォントが入ってないんじゃ?

英語版Windowsにはアジア圏環境用フォント・IMEなどが追加でインストールできますが、普通は入れてないと思います。(XPではOSのCD-ROMに入ってましたが、それ以前のは存じません)
永井和彦
ぬし
会議室デビュー日: 2002/07/03
投稿数: 276
お住まい・勤務地: 東京都
投稿日時: 2004-10-15 13:53
METAに書いても化けてしまうが、Apacheが返すものに関してはちゃんと表示されている……とのことですから、使われているUA(IE5.0)がMETAの文字コード指定よりも優先して、ReponseHeaderのそれを見ているという状況だと思います。

Headerを正しく返すようにしてみてください。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2004-10-15 14:00
正常に表示できるものとできないものでレスポンスが送られてきているか見比べてみてはいかがでしょうか?
以下のようなソフトでリクエスト内容を取得することができます。

パケットキャプチャ系
・Ethereal
http://www.ethereal.com/
・Packetyzer
http://www.networkchemistry.com/products/packetyzer/

プロキシ系
・Apache Axis > Appendix : Using the Axis TCP Monitor (tcpmon)
http://ws.apache.org/axis/java/user-guide.html
・横取り丸
http://hide.maruo.co.jp/software/ydm.html
ちいにぃ
大ベテラン
会議室デビュー日: 2002/05/28
投稿数: 244
投稿日時: 2004-10-15 14:11
HTTPの観点から。
HTTPリクエストヘッダ/レスポンスヘッダを確認してみましょう。

Webアクセスをモニタするで紹介されている Fiddler や
ieHTTPHeaders (IE 5で動かないかもしれないですが) や、
あるいは InetSpy で調べることができます。

ヘッダについては、たとえば HTTP Header Fields とか。
みきこ
会議室デビュー日: 2004/10/15
投稿数: 4
投稿日時: 2004-10-15 17:20
さく様、永井様、インギ様、ちいにぃ様、ありがとうございました。

 アジア圏環境用フォント・IMEをダウンロードし、HTTPリクエストヘッダ/レスポンスヘッダ
を取得して、正常に表示されるものと比較してみます。

 大変参考になりました。
 結果について、またご質問させていただきます。
 
ありがとうございました。

 
さく
会議室デビュー日: 2004/09/01
投稿数: 13
投稿日時: 2004-10-15 20:37
失礼。表示されるものもあると言うことなのでフォント云々は見当違いですねorz
みきこ
会議室デビュー日: 2004/10/15
投稿数: 4
投稿日時: 2004-10-20 19:30
 みきこです。

 教えていただいたようにieHTTPHeaders で、Request、Responseのヘッダーを調べてみました。

 (結果)
  外国IEでは、Requestのaccept-languageが""en-us"となる → 
     resp.setContentType("text/html; charset=iso-8859-1");

  日本IEでは、Requestのaccept-languageが""ja"となる → 
     resp.setContentType("text/html; charset=Shift_JIS");

  のように、accept-languageによりResponseのヘッダーをプログラムで設定していた事がわかりました。

  外国IEのインターネットオプションの言語で、日本語(ja)を設定すると、文字化けが解消しました。

  ご回答くださった皆様、ありがとうございました。
 大変、勉強になりました。
 
1

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