時々「Unexpected character in input:」エラー

EUCで書かれたPHPで「Unexpected character in input:~」というエラーが時々出るという問い合わせがあったので調査してみました。
この「時々」というのがポイントで、さらに調べてみたところ、IE6やFirefox等では発生せず、IE7でのみ見受けられる現象でした。
(実際にブラウザから数百回行ってみた検証結果ですので、違うかもしれませんが…)

文字コードによるエラーであろうと、おおかた検討がつきますが、PHPやデータベースの設定を見直しても特に問題が見つかりませんでした。
どうやら原因はIE7の文字コード認識にあるようです。
どういう理由でかは分りませんが、何回かに1回という確率で、文字コードの判別に失敗してしまっています。

解決策は昔流行った
<!– 美乳 –>
です。

これは、SJISでは存在しない「0xFD」「0xFE」の文字コードを含む文字をコメント文として挿入しておき、それをブラウザが自動判別に利用するという方法です。
さすがに「美乳」はまずいという場合には「◎◇」「入口」など、第2バイトが「0xFD」や「0xFE」で構成された文字を組み合わせることで対応できます。

これをHTMLソースの一番初めに挿入する事で、解決できましたのでご報告いたします。

  1. <!– ◎◇ –>
  2. <!DOCTYPE HTML PUBLIC “-//W3C//DTD HTML 4.01 Transitional//EN”>
  3. <HTML LANG=”ja”>
  4. <HEAD>