- ベストアンサー
Webページの文字化け
- Webページ作成時の文字化け問題について
- 文字コード指定やmetaタグの効力についての疑問
- 大量のページでの解決策について
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
>DOCTYPE宣言が無い場合 その場合は自動的にブラウザ側で「互換モード」と呼ばれる状態としてHTMLが解釈され実行表示されます(4.01になる訳では無い)。またこの互換モードの際にはその「ブラウザ側で設定されている文字コード」で自動的に解釈され表示されます。つまり各々のUserの環境によって表示され方がまちまちになります。これを回避しUser側に余計な手間を掛けさせないためにも、webサイト運営側で確実にコントロール可能な「DOCTYPE宣言+文字コードの明示的指定」が一番確実です。 話は最初に戻りますが、4.01だろうが HTML5だろうが、結局は必ず全HTMLを1つずつ修正追記する形でしか文字化けの不具合は修正出来ませんので。ああだこうだと無駄なあがきをするよりも、1秒でも早く決断して1分でも早く作業へ取り掛かった方が良いと思いますよ。で、どうせ全ファイル修正になるのだから、ついでに将来的に不具合の発生を抑えられる確実な方法として「HTML5に準拠させて、UTF8化を完了させる」のが最も簡単かつ作業量も少なくて済むと思います。 質問者は重大な何か勘違いをなされている様ですが…基本的にHTMLファイル内にて記述された指定や設定値などは、あくまでも「その個々のwebページ内部にしか影響を与えない」というのがwebの大原則かつ常識です。これはもうWC3で世界標準として国際規格としてそういう風に策定されていますので絶対に変えられません。ですので前述の通り、全HTMLファイルを1つずつ修正追記するしか方法が無い訳です。 さあ、早くご決断を…! P.S. ご友人が文字化けしてないのは、今までたまたま運が良かっただけで。今後も些細な環境の変化でいきなり全ページ全滅する事もあります。薄氷を踏む様な綱渡り人生に今すぐピリオドを打ちましょう。 総ファイル数が数百程度なら全く問題ありません。大規模webサイトの運営などになると数万~数百万ファイルとかと格闘させられる事も珍しくないですから(笑)。今回みたいな単純な文字コード変換だけなら、ソフトでバッチ処理組んで10分程度で変換終了、後はFTPで上書きアップロードするだけですから。
その他の回答 (3)
- 4017B
- ベストアンサー率73% (1341/1821)
付け焼き刃のその場しのぎの対応しても、すぐにまた次の不具合が連鎖的に発生し続けて、その度に修正を繰り返し続ける無限地獄に終止符を打つ良い機会だと思って、ここで完全に全てのファイルをweb標準の「UTF-8、改行LF、BOM無し」に全変換して置いた方が良いと思います。 - 文字コード変換ソフト https://www.vector.co.jp/vpack/filearea/winnt/util/text/conv/code 上記の参考URLの中から質問者に合った適当な変換ソフトを入手し、それを使って全ファイルを「UTF-8、改行LF、BOM無し」に全変換して全ファイルの文字コードを UTF-8 に統一した後、さらにHTMLファイルにMETAタグを適切に付与してアップロードし直してしまえば、今後は少なくとも文字化け問題に悩まされる事は無くなります(ほぼ全てのwebサーバはUNIXかLinuxで動いており、そこはUTF8が常識の世界なので)。 また今後も何か他のツールを利用する場合や、或いはwebサーバを引っ越す場合などでも、テキスト関係のファイルがすべて「UTF-8、改行LF、BOM無し」で統一されていれば、原因不明の不具合などに悩まされる可能性がぐっと少なくなります。今更、どの様な屁理屈をこね回しても「文字コード:Shift_JIS」には何のメリットもありません。 手間暇を惜しまずに今、決断してやって置かないと、将来的にはもっと問題が複雑化して何十倍もの面倒なトラブルになるだけなので。これを契機と捉えて是非、問題の根本解決を先送りせずにやって置くべきだと思います。 P.S. 質問者はHTMLのバージョン自体(DOCTYPE宣言)は何で記述していますか?文字コードを Shift_JIS などにしている辺り、HTML4.01などに準拠させている可能性が高そうですが…。前述の通りこれを契機に色々とwebサイトを最新の版へバージョンアップして置く事は良い事だと思います。 実際、最新の HTML5 に準拠させてHTMLファイルを記述して置けば、HTML5ではデフォルトで「文字コード:UTF-8」に初期設定されていますので。個々のHTMLファイルにMETAタグを記述して個別に文字コード指定を行わなくても、「無指定=UTF8」として自動的に解釈表示される仕様となるので、むしろ非常に楽になると思いますよ。
お礼
ありがとうございます。ご指摘のことは重々承知しています。20年近く前から友人達との情報交換のために作り始めたHPで、その頃はまだHTML5.0は使われていませんでした。参照したプログラムマニュアルにもDOCTYPE宣言などなく(html4.0準拠ということでしょう)文字コードもごく普通にShit-JISでした。それでそのまま過ごしてきたのですが、今までに仲間内から文字化けのクレームはありませんでした。新しい友人の一人から文字化けを指摘されて、この問題に気がつきました。7年ほど前から新しく追加するhtmlファイルにはコード指定のmetaタグを入れるようにしたのですが、それ以前の古いものが数百ページあり、とても手に得ないので、今さらどうしたものか迷っています。それで応急処置的解決がないものかと思い質問しました。 それにしてもほとんどの友人は古いページでも文字化けしないと言います。文字化けのクレームは一人だけです。なぜでしょうね。ブラウザの違いか、ブラウザの設定の問題でしょうか。
補足
お礼を書いた後気がついたのですが、古いhtml4.01の時に作ったWebなのだから、古いhtml4.01のDOCTYPE宣言をindex.html文に書き込んでおけばブラウザがそれを認識してコード合わせをしてくれる言うことはないのでしょうか。ご意見賜りたし。これなら応急処置できます。(応急処置は駄目と言うことは重々承知の上) <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
- kame999
- ベストアンサー率21% (638/2980)
https://proengineer.internous.co.jp/content/columnfeature/5438 複数のソースファイルを一発置換!サクラエディタでgrep&置換する方法
お礼
ありがとうございます。必要な作業は全ページにmetaタグを挿入することです。数百ページあるので、暇を見て少しずつやります。でも作成者(小生)を含めて多くの友人はまったく文字化けしないと言っています。文字化けするのは今のところ一人だけです。ブラウザが違うのでしょうか。エディタ(TeraPad)で作ったhtmlファイルはすべてShift-JISで保存しています。それがブラウザのコード設定とバッティングしているのでしょうか。
- oboroxx
- ベストアンサー率40% (317/792)
全部のページに入れないとダメです。 大変ですが頑張ってください。
お礼
ありがとうございます。 全ページに必要ですか。(ため息、何百ページもある) でも閲覧者の多くが古いページでもまったく問題ないと言っています。文字化けしたのは今のところ特定の友人一人だけです。ブラウザによって違うのでしょうか。
お礼
ありがとうございます。それはそうでしょうね。htmlファイル内のタグ記述が別のファイルに影響するわけがありませんね。つまらぬことを書きました。まあ不特定多数向けのサイトではなく、仲間内のサイトなので、とりあえずはこのままにしておきます。文字化けクレームを言ってきた友人は、その後アクセスを繰り返していたら古いページも新しいページも文字化けしなくなったと連絡してきました。なぜそうなったのかは分かりません。その他のメンバーからは一度の文字化けの指摘はありません。
補足
いろいろサジェッション頂き、ありがとうございます。今後の参考にさせて頂きます。