以前はそんなことなかったのに、2週間前くらいから急になりだしたのですが、その頻度もたまにですが、
なぜそうなるのか気になります。
文字化けも漢字のようなものではなくて、テキスト部分が全て??????となり、そのページは?だらけになります。
他のページへ飛んで戻ってくると直っていますが、とっても気になります。
エンコードは自動選択にしています。
会社のパソコンで見ても同じようにたまになります。
何が原因でこういう症状がおこるのか、お分かりの方教えてください。
Webアプリケーションエンジニアやってます。
会社のパソコンで見ても同じように文字化けするのなら、
かなりの確率で閲覧先のサイトに原因があると思います。
文字化けの原因はいくつか考えられるので、断定はできませんが、
主な原因として考えられるのは、エンコードの相違です。
下記(1)と(2)で相違がある時に、文字化けが起こります。
(1)閲覧先サイトのHTMLファイルのエンコード
(2)HTMLソースのHEADタグ内で指定されているエンコード
まず、(1)についてですが、閲覧先のサイトの管理者が、
HTMLファイルを編集し、保存したときの文字コードのことを指します。
次に(2)についてですが、HTMLソースを見てもらえるとわかるのですが、
最初の方に、下記のような記述があると思います。
※もしくは記述が無いかもしれません
<meta http-equiv="content-type" content="text/html; charset=utf-8">
上記の場合は、
「このページは文字コードUTF-8で保存しているから、表示する時もUTF-8で開いてください」
という宣言です。ブラウザのエンコードが自動選択の場合、
ここの記述を元にブラウザが判断してページを表示します。
文字化けが起こる原因についてですが、
例えば、(1)HTMLファイルはSJISで保存されているのに、
(2)の指定がUTF-8だったという場合に起こります。
また、「たまに」起こったり、他のページに行って戻ってくると直っているのは
推測ですが、ブラウザのキャッシュが残っているのはないかと思います。
簡単に言うと、文字化けせずに見えている時の設定が残っていて
その設定が適用されているのではないか?ということです。
参考サイトのリンクを貼っておきます。
Webアプリケーションエンジニアやってます。
会社のパソコンで見ても同じように文字化けするのなら、
かなりの確率で閲覧先のサイトに原因があると思います。
文字化けの原因はいくつか考えられるので、断定はできませんが、
主な原因として考えられるのは、エンコードの相違です。
下記(1)と(2)で相違がある時に、文字化けが起こります。
(1)閲覧先サイトのHTMLファイルのエンコード
(2)HTMLソースのHEADタグ内で指定されているエンコード
まず、(1)についてですが、閲覧先のサイトの管理者が、
HTMLファイルを編集し、保存したときの文字コードのことを指します。
次に(2)についてですが、HTMLソースを見てもらえるとわかるのですが、
最初の方に、下記のような記述があると思います。
※もしくは記述が無いかもしれません
<meta http-equiv="content-type" content="text/html; charset=utf-8">
上記の場合は、
「このページは文字コードUTF-8で保存しているから、表示する時もUTF-8で開いてください」
という宣言です。ブラウザのエンコードが自動選択の場合、
ここの記述を元にブラウザが判断してページを表示します。
文字化けが起こる原因についてですが、
例えば、(1)HTMLファイルはSJISで保存されているのに、
(2)の指定がUTF-8だったという場合に起こります。
また、「たまに」起こったり、他のページに行って戻ってくると直っているのは
推測ですが、ブラウザのキャッシュが残っているのはないかと思います。
簡単に言うと、文字化けせずに見えている時の設定が残っていて
その設定が適用されているのではないか?ということです。
参考サイトのリンクを貼っておきます。
Ryu0117様
ご丁寧に分かりやすく解説していただいて、本当にありがとうございます。
素人の私も大変理解しやすかったです。
ソースをみるとまさに
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
という記述がありました。
ということは、閲覧先サイトのHTMLファイルのエンコードがUTF-8ではないということですよね。
参考サイトもとても勉強になりました。
ありがとうございました。
ブラウザも文字コードを判定ミスしてしまい,そのため文字化けが起こり得ます。
http://www.kaiteki-net.com/nettrouble/mojibake/mojibake3.html
masanobuyo様
早速のご回答ありがとうございます。
ブラウザも判定ミスをすることがあるということは、エンコード自体ではなく、(私の場合)IEが判定ミスを
して文字化けすることもあるということですよね。
ということは、私のお気に入りのホームページだけでなく、他のホームページでもこの文字化けは起こりうると
いうことなのでしょうか。
参考サイトのご紹介もありがとうございます。
ものすごく詳しく解説してくれていてびっくりしました。
その中で文字化けの種類がビンゴなものがありましたので、じっくり読み込みたいと思います。
絶対自分では探せなかったです。(今までさんざん探していたのですが)
ありがとうございました。
相手のHPに文字コードが混在していると思われます。あるいはUTF-8であっても非常に特殊な記号のゴミなどがあって、それで日本語ではないとブラウザが判断するためでしょう。
online_p様
ご回答、ありがとうございます。
色々な要因で文字化けというのは起こるのですね。
たーまに文字化けするということは、ブラウザもたーまにその特殊な記号のゴミを感知して、そう判断するということなのでしょうか。
どうもどうもありがとうございました。
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
という記述がありました。
ということは、閲覧先サイトのHTMLファイルのエンコードがUTF-8ではないということですよね。
たぶん違います。閲覧先のサイトのHTMLはUTF-8だと思います。
IEの場合、エンコードを変更できますので、そのページを明示的にIEでUTF-8で表示して
文字化けしなければ閲覧先はUTF-8です。
この状態でたまに文字化けするのなら、IEの文字コードの判断ミスです。
文字化けした時に、右クリックでメニューをだして
そこでエンコードを選べば、IEは現在どの文字コードで表示してるかわかります。
これがUTF-8以外になってると思います。
以前はそうでなく、そのページも更新されていないようでしたら
WindowsUPDATEなどでIEにパッチが当たって動作が少し変わった可能性があります。
tama213様
ご回答ありがとうございます。
文字化けしたときに右クリックでエンコードをみてみました。
すると、UTF-8になっていたんですよね・・・
で、改めて文字化けの状態を見ると見事に全て??????????????になっていました。
少しくらい違う記号みたいなものも混じりそうなものなのに・・・
数字だけ少し表記されてます(一部ですが)
もう一度windowsUPDATE やってみます。
どうもありがとうございました。
「以前はそんなことなかったのに。。。」というところが気になって書きました。
参考になるかどうかわかりませんが、以前制作したサイトで同じようなことがありました。
WEBを公開してしばらくは問題なかったのですが、ある日を境に文字化けが始まり、ファイルの文字コード、ソースの文字コード全てチェックしても問題はありませんでした。
途方にくれてレンタルサーバーの会社に聞いてみると、共用サーバーの場合、同じサーバーで運営されている他のサイトの影響で、まれに文字化けが起こるのだとか。
そこでレンタルサーバー内の一番上の階層のフォルダに.htaccessで運営するサイトの文字コードを指定してやると、それ以降文字化けが起こらなくなりました。
yamahide1967様
ご回答ありがとうございます。
そうなんです、以前はそんなことなかったんです。一回も。
なるほど、サーバーの問題である場合もあるのですね。
そうなると、もう仕方がないですよね。頻度の問題もありますが、そんなに頻繁にでてくるわけではないので。
windowsUPDATE しようと思ってもなんだか途中でエラーがでて「できませんでした」って出てくるし、
私のパソコンにも問題があるのかもしれません。
どうもありがとうございました。
Ryu0117様
ご丁寧に分かりやすく解説していただいて、本当にありがとうございます。
素人の私も大変理解しやすかったです。
ソースをみるとまさに
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
という記述がありました。
ということは、閲覧先サイトのHTMLファイルのエンコードがUTF-8ではないということですよね。
参考サイトもとても勉強になりました。
ありがとうございました。