WEBのエンコードに関しての質問です。顧客のWEBサイトが現在 Shift JIS で作られているのが確認できました。サイトを見てもディフォルトの設定で、問題なく見ることができました。先方のサーバへのアクセス件は得られなかったので、データを引き取って、校正のやり取りのため、自社で契約しているレンタルサーバにアップしたところ、設定が同じにも関わらず、適切なエンコードがされずに文字化けを起こしてしまいました。windows XP、mac osx どちらで見ても同様の症状になります。ちなみにエンコードを手動で Shift JIS にすると適切な表示に戻るのですが、どういった原因が考えられるでしょうか?

回答の条件
  • 1人2回まで
  • 登録:2007/07/27 11:21:49
  • 終了:2007/07/31 18:13:15

ベストアンサー

id:Bookmarker No.4

しおり回答回数191ベストアンサー獲得回数342007/07/27 13:05:37

ポイント15pt

> Content-Type: text/html; charset=iso-8859-1

それが原因です。

エンコーディングは、HTTP ヘッダーが最優先されます。

文字符号化方法の指定

本仕様に適合するユーザエージェントは、文書の文字符号化方法を決定する場合に次の優先順位を守らねばならないということである。優先順位の高いものから低いもの順に以下の通り。

  1. HTTPヘッダのContent-Typeフィールドの、charsetパラメータ。
  2. META要素で、http-equiv属性値がContent-Typeかつvalue属性の値にcharset情報があるもの。
  3. 外部リソースを指している要素に設定されているcharset属性値。

HTTP ヘッダーでの charset の指定は、サーバーに何を使っているかによって方法が異なりますので、サーバー名(とバージョン)を書かれると、より適切な回答が得られると思います。

Welcome! - The Apache HTTP Server Project

id:jmos

ありがとうございます、解決の糸口が見えてきました。自分でも調べてみますが、サーバは、「Apache HTTP サーバ バージョン 2.0」です。もし対応が分かりましたらご教授頂けると助かります。

2007/07/27 13:24:56

その他の回答(5件)

id:Bookmarker No.1

しおり回答回数191ベストアンサー獲得回数342007/07/27 11:39:35

ポイント20pt

> 設定が同じ

本当に同じなんでしょうか?

顧客のサーバーでは、HTTP ヘッダーで charset=Shift_JIS を送信していたのに、御社で契約しているレンタルサーバーでは、HTTP ヘッダーで charset を送信していないまたは Shift_JIS 以外の charset を送信しているということはありませんか?

# Firefox なら Live HTTP Headers を使うと簡単に確認できます。

id:jmos

設定というのは、HTMLの記述の事で、2番の方が指摘して下さっている <meta http-equiv="Content-type" content="text/html; charset=Shift_JIS"> が該当します。

HTMLへの記述があっても、サーバの設定で変わる事があるという事でしょうか? サーバ関連の知識に疎いので、その辺りご教授頂けると助かります。

Firefox をインストールして、Live HTTP Headers を使って確認したところ、気になるところでは下の2行でしょうか?

Accept-Charset: Shift_JIS,utf-8;q=0.7,*;q=0.7

Content-Type: text/html; charset=iso-8859-1

2007/07/27 12:33:40
id:KUROX No.2

KUROX回答回数3542ベストアンサー獲得回数1402007/07/27 11:46:42

ポイント18pt

http://www.tohoho-web.com/wwwxx005.htm

<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">

この1文ぐらいははいってますよね?

id:jmos

その1文ははいっていました。

2007/07/27 12:12:52
id:wizemperor No.3

wizemperor回答回数379ベストアンサー獲得回数522007/07/27 12:13:03

ポイント20pt

HTTPヘッダのContent-Typeの文字エンコーディングが適切に設定されていないのではないでしょうか?

.htaccessというファイルを作り、

AddType "text/html; charset=Shift_JIS" .html

と書いてサイトのトップに設置するか、

HTMLの<head>~</head>の間に、

    <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" />

と追加してみてください。

XHTMLでXML宣言がある場合は、XML宣言も

<?xml version="1.0" encoding="Shift_JIS"?>

と適切な文字エンコーディングに書き直してください。

id:jmos

ありがとうございます。試してみます。

2007/07/27 13:31:13
id:Bookmarker No.4

しおり回答回数191ベストアンサー獲得回数342007/07/27 13:05:37ここでベストアンサー

ポイント15pt

> Content-Type: text/html; charset=iso-8859-1

それが原因です。

エンコーディングは、HTTP ヘッダーが最優先されます。

文字符号化方法の指定

本仕様に適合するユーザエージェントは、文書の文字符号化方法を決定する場合に次の優先順位を守らねばならないということである。優先順位の高いものから低いもの順に以下の通り。

  1. HTTPヘッダのContent-Typeフィールドの、charsetパラメータ。
  2. META要素で、http-equiv属性値がContent-Typeかつvalue属性の値にcharset情報があるもの。
  3. 外部リソースを指している要素に設定されているcharset属性値。

HTTP ヘッダーでの charset の指定は、サーバーに何を使っているかによって方法が異なりますので、サーバー名(とバージョン)を書かれると、より適切な回答が得られると思います。

Welcome! - The Apache HTTP Server Project

id:jmos

ありがとうございます、解決の糸口が見えてきました。自分でも調べてみますが、サーバは、「Apache HTTP サーバ バージョン 2.0」です。もし対応が分かりましたらご教授頂けると助かります。

2007/07/27 13:24:56
id:Yota No.5

Yota回答回数453ベストアンサー獲得回数282007/07/27 17:42:17

ポイント20pt

話は変わりますが、たぶんWindwosかMac環境で作業されていると思いますが、自分のパソコンにWEBサーバ(Apache)をインストールしたほうが早いですよ。手間賃以外ただです。手動でサービスのスタートストップすればメモリも食わないし。

Apacheはデフォルトでは文字コード指定しないので、metaタグに書いた文字コードをブラウザは選びます。

iso-8859-1をレスポンスヘッダに書くように設定してあればそちらが勝ちます。

http://httpd.apache.org/docs/2.2/ja/mod/core.html#adddefaultchar...

もし興味がおありなら、やってみてください。

http://www.apache.jp/

id:jmos

具体的にありがとうございます。

> Apacheはデフォルトでは文字コード指定しないので、metaタグに書いた文字コードをブラウザは選びます。

> iso-8859-1をレスポンスヘッダに書くように設定してあればそちらが勝ちます。

そういう設定があるという事ですね、SSHでroot権限を使ってアクセスして、多少の設定はいじれるみたいなんですけど、FTPとSSH以外のアクセス方法が分からないので、それで設定をいじれないのであればお手上げです。

自分のパソコンにというのは興味ありますけど、未熟者なので、趣味で腕を磨いてからの方がいいかもしれません。

2007/07/27 19:11:02
id:iwaim No.6

iwaim回答回数215ベストアンサー獲得回数192007/07/28 04:40:30

ポイント20pt

そういう設定があるという事ですね、SSHでroot権限を使ってアクセスして、多少の設定はいじれるみたいなんですけど、FTPとSSH以外のアクセス方法が分からないので、それで設定をいじれないのであればお手上げです。

SSHでログインしてApacheの設定ファイルを編集し、Apacheを再起動すればよいです。

http://httpd.apache.org/docs/2.0/ja/mod/core.html#adddefaultchar...

すべてのコンテンツがShift_JISならば、設定ファイルで「AddDefaultCharset On」か「AddDefaultCharset iso-8859-1」とあるところを「AddDefaultCharset Shift_JIS」に変更すれば問題が解決するはずです。

まあ、サーバ関係のことは御社のSEなどに任せてしまった方が良いようには思いますけれども。

id:jmos

ありがとうございます! えっと、SEいないんですよ。。取り敢えず頑張ってやってみます。

2007/07/28 22:10:30

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません