プロが教える店舗&オフィスのセキュリティ対策術

いつもお世話になります<(_ _)>

携帯電話用サイトを作っているのですが、HTMLファイルの最初に
<html lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS">
と設定しても、PCでアクセスした時にUTF-8で表示され文字化けされてしまいます。
HTML自体の文字コードはSHIFT-JISで保存されております。
手元に携帯電話がないので、まだ携帯表示は確認していませんが、スマートフォン(Android)で見ても文字化けしています。

なぜcharsetでSHIFT_JISを指定し、ファイルもSHIFT_JISで保存しているのにも関わらず、UTF-8になってしまうのでしょうか・・・?

同じような現象をご存じのかた、是非ともお力添え下さい。
宜しくお願い致します<(_ _)>

A 回答 (4件)

サーバーへファイルを転送するときにAsciiモードで転送していたりして。


転送モードをバイナリにしてみましょう。

転送モードが何のことかわからないならば、転送に使用しているソフト名と、サーバーのOSまたはサーバー提供会社の名前など、もう少し情報を補足に書いてください。
    • good
    • 0

ブラウザが「UTF-8として解釈する」のでしょうか。


そうであるならば,とりあえず送信されてくるHTTPヘッダ情報を見てみるとよいかと。
# IEならばF12 開発者ツール - ネットワーク - キャプチャ - 該当項目詳細 - 応答ヘッダー

HTTPヘッダで指定されているContent-TypeフィールドはMeta要素での指定より優先されます。
HTTPヘッダで
Content-Type: text/html; charset=UTF-8
と書かれていたならば,それを
Content-Type: text/html; charset=Shift_JIS
と返すように変更する必要があります。
# 方法はサーバーに依存。
    • good
    • 0

PCでアクセスしたときにUTF-8で表示されているというのはどこで確認しましたか?



もし、差支えなければそのURLを教えてもらえれば、原因を見つけやすいかもしれません。
    • good
    • 0

 サーバーへは、テキストモードで転送します。

バイナリではありません。テキストモードで転送すると、サーバーの改行コードに合わせます。
 通常は、
<meta http-equiv="content-type" content="text/html; charset=Shift_JIS">
 の記述があれば、HTTP応答ヘッダに関わらず、ブラウザはそれに従うはずです。元々はサーバーが<meta>を理解してくれる想定でしたが、そのような動作をするサーバーはありません。

>PCでアクセスした時にUTF-8で表示され文字化けされてしまいます。
 これをどのように判断されたのか疑問です。もし、ブラウザの文字エンコーディングでUTF-8を選択すると、きちんと表示されるのでしたら
「ファイルもSHIFT_JISで保存しているのにも関わらず」
を疑います。ローカルでブラウザからそのファイルを開いたら・・・
 もし、ブラウザのエンコーディングでUTF-8を選択するときちんと表示されるのでしたら、文字コードがUTF-8で保存されています。

 一方、ブラウザのエンコーディング指定を(正確には)Shift_JISにすると、きちんと表示されるなら、ブラウザが文字コードをUTF-8と判断しているということですから
 HTMLの前に、UTFと判断する何か余分なものが入っていませんか? たとえばBOM(unicodeサイン)とかが残っている。UNICODEの文字--空白とか--が入っているとか。

 サーバーの応答ヘッダは、firefoxをご利用でしたら、Live HTTP Headers( https://addons.mozilla.jp/firefox/details/3829 )と言うアドオンで調べることが出来ます。
 また、
Another HTML-lint gateway ( http://openlab.ring.gr.jp/k16/htmllint/htmllint. … )
 でURLを指定してチェックすると、文字コードの一致性が判別できます。それ以外を原因とするエラーもチェックできます。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!