質問 |
||
| 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を指定すると正常に表示されるのでなんで? と思ってしまいます。 |
| この回答へのお礼 | この回答にお礼をつける(質問者のみ) |