PHP 日本語文字化け

日本語文字化けには、様々な要因で引きおこる現象である。
これまでHTMLのUTF8宣言、PHPコードによる内部コード宣言など、その都度クリアしてきた課題である。
今回、デモ環境の構築中に起きた事象で、PHPの最新バージョンでの試行であった。少々原因解決に時間を要したので、その思いも込めてここに記載する。


上図システムは、勤務時間を管理する打刻システム(ウェブ版)である。PHPベース、V7.2.4で構築していたが、デモ環境を構築するにあたり最新バージョン8.2.12にシステム移行を行った。
従業員名の欄のとおり「?」文字化けしている。

固定文字が化けていないので、DB周りに特定し原因を調査した結果、基本的なところ(DBのコネクト部分)での修正で解決となった。

DB接続は、PDO プリペアドステートメントという仕組みを使っている。

DBコネクトの方法

コード

  • ① 本文コード

  • ② 接続 conection.php (修正前)
  • $db=new PDO("mysql:host={$db_host};dbname={$db_name}",$db_user,$db_password);

  •   接続 conection.php (修正後)
  • $db=new PDO("mysql:host={$db_host};dbname={$db_name};charset=utf8",$db_user,$db_password);

接続時、(utf8)キャラクタコードを指定することで日本語文字化け問題は解決となった。


TOP