ようこそ ゲスト さん、新規登録(無料)して気になる疑問を解決しませんか?

質問

QNo.3957539 utf-8のページの文字化け
質問者:noname#65793 いろんなサイトを見ている際に時々あるのですがUTF-8のサイトに限り
IE(使用しているブラウザはIE6)で文字のエンコードがうまく取得?できず
文字化けの状態でページが表示されています。

表示→エンコード→UTF-8を選択肢更新すると正常に表示されます。
2度目からは正常に表示されるので始めて見たサイトに限られる
ようなのですがこれはブラウザが原因でしょうか?
(自動選択にチェックはついています)

ソースを見ると
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "​http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="​http://www.w3.org/1999/xhtml"​ xml:lang="ja" lang="ja">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
・・・
となっておりエンコードでUTF-8を選択すると正常に表示される
とこを見るとおかしい箇所もないようです。

私の持っているサイトは現在Shift_jisで作っているのですが
リニューアルを機にUTF-8で作り直す事を検討中なのですが一部で
文字化けするのでは・・・と迷っております。

これはなにが原因なのでしょうか?

宜しくお願い致します。
困り度:
  • 困っています
質問投稿日時:
08/04/18 17:53
この質問に対する回答は締め切られました。
最新から表示回答順に表示

回答

ANo.5 4です。
念のため、<!-- 青 --> → <!-- blue -->
などに変更しておいたほうがいいと思います。
(実際には宣言などより前に日本語があったとしても、
問題ないことのほうが多いですが、
守っていたほうが間違いありません)

ちなみにEmEditorはフリー版もあります。
http://www.vector.co.jp/soft/winnt/writing/se047993.html
こちらでダウンロード可能です。

特にPHPやPerlを使うということでしたら、
文字コードを確認しておいたほうがいいと思います。
読み込んだログとスクリプトのエンコードが違うと、
文字化けが起きたり、サーバエラーになったりすることもあります。
回答者:kuzumiHK
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/04/24 20:22
この回答へのお礼お返事ありがとうございます。
>念のため、<!-- 青 --> → <!-- blue -->・・・
これについてですが日本語(漢字)でないと効果がないようです。

早速フリー版でテストしてみた結果をご報告致します。

全ての設定プロバティでファイルタブの開くときのエンコードを
UTF-8に変更したところ行数が少なくてもUTF-8で開いてくれました^^
さらにおまじないも不必要でした!
ちなみに設定する前にもテストしてみたのですがこちらはやはり
TeraPad同様の振舞いでした。

TeraPadも似たような設定はあったのですが設定しても行数が
少ないと全く効果がありませんでした・・・

仮にEUC-JPのファイルを開く際には再度設定が必要となりますが
文字コードにつきましてはこれで解決できそうなのでEmEditorで
進めていきたいと思います。
本当にありがとうございました!

余談となってしまいもうしわけないのですが現在phpとsmartyで
サイトを作りなおしております。
smartyのファイルをダウンロードし中身のファイルをみてみたところ
全てsjisで保存されておりました。
プログラムは全て英語なので特に関係ないのかな?・・・とも
思ったのですが微妙に気になってしまいます。^^;

回答

ANo.4 Dreamweaverなどのホームページ作成ソフトで作ったファイルが、
最初にShift-JISで作られた場合、自分が意識していなくても、
その書類自体はShift-JISで保存されます。

その場合、あとからmetaタグだけをUTF−8に変更しても、
ファイル自体はShift-JISのままの場合があります。
基本的なことなので、コーダーは当たり前に確認していますが、
デザインから入った方だったりするとこの辺が盲点だったりします。

確認する方法としては、
秀丸やEmEditor(MacはJeditやmi)などのエディタで開き、
「名前をつけて保存(別名で保存)」をすると、
エンコードという項目に表示されるので、
そこに「Shift-JIS」と表示されていたら、
文字化けの原因は、ファイルのエンコードの可能性があります。

これを「UTF-8」に変更するには、エンコードから「UTF-8」を選択して、
(unicodeサイン(BOM)をつけるチェックボックスはたぶんoffでOK)
改行コードをアップするサーバ(UNIXならLF)に合わせて保存すれば、
解決できると思います。
回答者:kuzumiHK
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/04/23 22:27
この回答へのお礼ご丁寧にお返事頂きましてありがとうございます。
秀丸やEmEditorを調べてみたのですが有料のようだったので
今回は参考にまでとさせて頂きます。

趣味のホームページなのでやはりフリーのソフトでやりすごしたい
もので・・・^^;

どちらにしろ文字コードをしっかり設定すれば問題ないということ
のようなのでそこを気をつけてutf-8で作ってみたいと思います。

文字化けする事例として自分で調べた際にネットで見つけた情報が
微妙に気になるのですが

1:<head>のすぐ下にcharset=utf-8を入れればよい。

【例】
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
・・・
</head>

2:charset=utf-8以前に日本語を表示してはいけない。
【例】
<!-- 青 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
・・・
</head>

これも気をつけるべきでしょうか?

smartyとphpを使う予定なのですが読込むするファイルの文字数が
少ない場合、文字コードがうまく取得できないようなので俗に言う
おまじないを使い以下のようになりますよね?

<!-- 青 -->
<?php
print <<<EOF
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
・・・
</head>
EOF;
?>

これを出力されるhtmlで見ると
<!-- 青 -->
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
・・・
</head>

となりcharset=utf-8以前に日本語が表示されてしまいます。
テキストファイルの文字コードを維持するためとはいえリスクが
あるのでは・・・と不安です。

この場合どのようにするべきでしょうか?

回答

ANo.3 文字コードが正しく読み込まれない対策は
<meta name="keywords" content="検索,検索,検索">
<meta name="description" content="検索エンジン">
などcontent="コメント"を文頭2〜3行内のメタデータに入れれば事足りるかと

フリーソフトはいろいろありますけど、どれを使っても機能的にエディタの変換機能と大差ないと思います。
ただ文字コードの確認用ならフォルダの詳細表示で文字コードを教示してくれる拡張ツールが便利ですね。
URLは貼ると問題あるかもなので検索してください。

ただ、こういう対策をするよりは、正しく文字コードを認識するエディタを買うべきだと思います。
回答者:toy_can
種類:回答
どんな人:経験者
自信:参考意見
回答日時:
08/04/21 18:06
この回答へのお礼お返事ありがとうございます。

>ただ、こういう対策をするよりは、正しく文字コードを認識するエディタを買うべきだと思います。

確かにその通りですね。やはりDreamWeaverなどでしょうか?
できればフリーのもので済めばよかったのですが検討してみたいと思います。

>ただ文字コードの確認用ならフォルダの詳細表示で文字コードを教示してくれる拡張ツールが便利ですね。
URLは貼ると問題あるかもなので検索してください。

非常に便利そうなものだと思い早速検索してみたのですが
該当しそうなものが見つかりませんでした・・・
ベクターでも検索してみたのですが文字コードの相互変換するもの
ばかりで文字コードを一覧で表示する機能があるようなものは
ないようでした。
名前だけでも教えて頂けないでしょうか?

宜しくお願い致します。

回答

ANo.2 >時々みられる他のサイトで起こる文字化けの原因はブラウザなんでしょうか?
>表示→エンコードでutf-8を指定すると正常に表示されるのでなんで?

ブラウザよりは文章の文字コードが原因だと思います
コピペなどで他のコードが混じってしまうと化けやすくなりますね
charset=utf-8
と指定していても、jisで記述してある部分が文章の初めのほうにあれば、jisで表示しちゃったりします
一部のブラウザはソースの頭何行かを読み込んで、その文字コードを文章がどのコードで構成されているかの判断材料にするからです
対策としては、タイトル要素や検索ワード記述部分に、指定したコードの全角文字を入れておくといいでしょう

ほかには、エディタでのコード変換うまく行ってない場合もあります
サクラやテラパドはコード変換が得意ではなかったはず
最近のバージョンを確認していないので今はどうかは知らないですが
EUCにJIS文章をコピペってEUCに戻らなくなるってことが結構ありましたw

どうしてもエンコードがうまく行かない場合
HTMLなどを作成しているファイルの文章が
すべてutf-8の文字で構成されているのか確認すべきでしょう
回答者:toy_can
種類:アドバイス
どんな人:経験者
自信:参考意見
回答日時:
08/04/20 04:47
この回答への補足お返事ありがとうございます。
引き続き自分でも調べたところcharset=utf-8の前に日本語が
あるとそのような現象になる場合もあるということがわかりました。

>サクラやテラパドはコード変換が得意ではなかったはず
最近のバージョンを確認していないので今はどうかは知らないですが
EUCにJIS文章をコピペってEUCに戻らなくなるってことが結構ありましたw

エディタはTeraPadを使用しています。
行数が少ないとeuc-jpやutf-8で保存してもsjisになってしまい
行頭にコメントを入れてやらなければ文字コードが保存できない
ので大丈夫かな〜と不安です。w

例えばこんな感じです。
<!-- 青 -->
<?php
print"ここにhtmlを・・・";
?>

これであればプログラム上問題がなくてもhtmlを見ると
charset=utf-8の前に日本語が表示されるのでまずいですよね・・・?

また、一括でファイルの文字コードがわかるようなフリーソフト
などありましたら教えてください。
この回答へのお礼この回答にお礼をつける(質問者のみ)

回答

ANo.1 1.作成しているページの文字コードがUTF-8であること
2.サーバー側がUTF-8に対応していること

この2点を確認してください。
回答者:toy_can
種類:補足要求
どんな人:経験者
自信:参考意見
回答日時:
08/04/18 18:24
この回答への補足私が契約しているサーバーはutf-8対応しているので問題ないです。
試しに先ほどテストしてみましたが正常に表示されました。
補足としてですが現在はShift_jisなので既存サイトで文字化けが
起きるということではありません。

時々みられる他のサイトで起こる文字化けの原因はブラウザなんでしょうか?
表示→エンコードでutf-8を指定すると正常に表示されるのでなんで?
と思ってしまいます。
この回答へのお礼この回答にお礼をつける(質問者のみ)
最新から表示回答順に表示