php文字化け対策

php文字化け対策の覚書です。

phpでhtmlコードを入力して
そのまま表示するだけの処理。

phpのソースは以下の通り。

<?php
  // 引数の確認
  if(isset($_GET['filename'])) {
    $filename = "./data/".$_GET['filename'].".html";  // 拡張子:html
    // ファイルの存在確認
    if (file_exists($filename)) {
      //$data = file_get_contents($filename);
      $doc = new DOMDocument();
      @$doc->loadHTMLFile($filename);
    } else {
      die (" {$filename} : File not found");
    }
  }else{
    die ("URLにfilenameパラメータが指定されていません!");
  }
  $arry = preg_split("/_/",$_GET['filename']);
  $prop = $arry[1];
  if(isset($_GET['preval'])) {
    $preval = $_GET['preval'];
    if(is_object($doc->getElementById('preselectedValue'))){
    	$doc->getElementById('preselectedValue')->setAttribute('value',$preval);
    }
    echo $doc->saveHTML();
  }
?>

これを、UTF-8でセーブ。

次が、読み込むhtmlのコードの一部。

<!DOCTYPE html>
<html lang="ja">
<meta charset=utf-8">
   :
<p>日本語ですよ!</p>
   :
</html>

これも勿論、UTF-8でセーブ。

これで、日本語表示には問題がないように
も思えるが、完璧に文字化けする。
mb_convert_encodingでutf-8にエンコード
するも、全く効果なし。

いろいろ手を変え品を変え試した結果
原因は、

<meta charset=utf-8">

の、書き方に問題があるらしい。

html5において、この書き方は正しいが
php内部では、認められないのだろう。

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">

に代えたところ、文字化けは見事解消。

まずは、目出度し目出度し!

あ・つ・い・・・

5/30(金)辺りから、日本全国がうだるような暑さである。
関東、特に東京・千葉・横浜はまだ暑さの中に、寒気の一部が
残っており、天候が不安定だったのだが、今日になりそれも
何処へやら。

今日の、東京の最高気温が34℃とのこと。
暑さに身体が追い付いていないので、外を歩くのが危ないよう
な気温である。

今年は、エルニーニョの影響で冷夏との予報だが、果たして
如何に。