質問: エンコードの種類をSHIFT_JISにしているのですが、ソースコードのどこかに不具合があるのか、日本語文字が「�」に変換されてしまいます。(WEB上でUTF-8と扱われ、文字化けが発生します。) 「�」が出現する場所はfooter付近でコードの行数が変われば「�」の出現する位置が変わったり、消えたりします。 対応策・原因がわかる方アドバイスよろしくお願いいたします。 --------------------------------------------2017/01/17------------------------------------------- >1つのHTMLページに、意図的に複数のエンコードを混在させていると言うことですか?それともShift_JISにしているつもりなのに >プログラムのバグでUTF-8が混ざってしまうという意味ですか? SHIFT_JISでコーディングを行っているので、後者です。おそらくSHIFT_JISに対応していない文字コード(改行とか)がどこかに含まれており悪さをしているのではないかと思っているのですが、表示されないため原因がわかりません。 バイナリデータを見る必要があるのでしょうか? ちなみに、 >1つのHTMLページに、意図的に複数のエンコードを混在させていると言うことですか? は可能なのでしょうか? >実際のHTMLを載せてもらうことは可能ですか? 載せたいのは山々ですが、載せることはできないです。。 載せた際のアプローチ方法を教えていただけますか? >javascriptを仕込んでいますか? はい。 --- 少し変わった方法で作業を進めているので、補足します。 1.php(UTF-8)でコーディングし、 2.インクルードし、ブラウザ上に出力されたファイル(宣言はshift-jis)をコピー 3.htmlファイル(shift-jis)に貼り付けています。 2の時点でエラーが発生します。 3の時点でshift-jisで使えない文字があるよと判明します この進め方が間違っていたとは思うのですが、問題が毎回発生するわけではなかったのでそのまま進めました。 自分でやっといてなんですが、なぜこの進め方で正しく表示することができるのでしょうか・・?
回答: Windows環境であれば、サクラエディタにてhtmlファイルを確認してはいかがでしょうか? SJISファイルを開きShift-JISで表現できない「m3」(立米)などの文字を入力して保存しようとすると、以下のように警告画面が表示されます。 !イメージ説明 2017/01/18追記 > > 1.php(UTF-8)でコーディングし、 > > > このときにShift-JISで表現できない半角スペース[0xC2A0]が混入した可能性はないでしょうか? 半角スペースなので、UTF-8環境では正しく(無害に)見えるところがいやらしいです。 UTF-8の半角スペースについて