章: 第6章: 実践運用と成長
「日本語が文字化けした」—— その原因は、文字コードの不統一がほとんどです。どこを直せば解決するか、すぐに特定できますか?
問題と解決策
文字化けは、データの入力・処理・出力のどこかで文字コードが混在するときに発生します。たとえば、HTMLがShift-JIS、PHPがUTF-8、MySQLがlatin1 という状態では、どこかで必ず化けます。
解決策はシステム全体をUTF-8に統一することです。HTML・PHP・MySQL・HTTPヘッダーすべてでUTF-8を宣言し、一貫させます。
文字コード設定箇所の比較
| 設定箇所 | 設定方法 | 重要度 |
| PHPヘッダー出力 | header('Content-Type: text/html; charset=UTF-8') |
✅ 必須 |
| HTMLメタタグ | <meta charset="UTF-8"> |
✅ 必須 |
| MySQL接続 | DSNに charset=utf8mb4 を指定 |
✅ 必須 |
| MySQLテーブル | CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci |
✅ 必須 |
| php.ini | default_charset = UTF-8 |
△ 推奨 |
チェックポイント: MySQL接続のDSNに
charset=utf8mb4を指定していますか?utf8とutf8mb4は別物で、utf8mb4が絵文字を含む現代の文字列に対応した正しい設定です。
コードサンプル
<?php
header('Content-Type: text/html; charset=UTF-8');
echo 'こんにちは';
まとめ & 次のステップ
- 文字化けはUTF-8への全体統一で防げます
- HTML・PHP・MySQL・HTTPヘッダーすべてでUTF-8を設定しましょう
- MySQLはUTF-8ではなく
utf8mb4を使うのが正しい選択です mb_*関数(mb_strlen()、mb_substr()等)はマルチバイト文字列の処理に必須です
次回は 正規表現 — 複雑な入力チェックを短く書く強力な武器を学びます。