自分で作ったホームページや PHP のプログラムをサーバーに上げたら、日本語が「縺ゅ≠」のような意味不明な文字に化けてしまった――。文字化けは、たいてい「文字コードがそろっていない」ことが原因です。昔の私の失敗も含めて、確認するポイントをまとめました。
文字化けの基本:どこかで文字コードがずれている
文字コードとは、文字をコンピューター上の数字に置き換えるルールのことです。日本語では、今は UTF-8 がほぼ標準ですが、昔は Shift_JIS や EUC-JP もよく使われていました。ファイルを保存したときの文字コードと、ブラウザやプログラムが「この文字コードだ」と思って読む文字コードが違うと、文字化けが起きます。
確認ポイント1:エディタで UTF-8(BOM なし)で保存しているか
昔の Windows のメモ帳は、UTF-8 で保存すると先頭に「BOM」という目印を付けていました。PHP では、この BOM が余計な文字として出力され、画面の上に変な空白が出たり、ヘッダー送信のエラーが起きたりします。
- 今の Windows 10・11 のメモ帳は、標準で「UTF-8(BOM なし)」で保存できる
- プログラムを書くなら、Visual Studio Code などのテキストエディタが安心(画面の右下で文字コードを確認・変更できる)
確認ポイント2:HTML で文字コードを宣言しているか
HTML の <head> の中に、次の1行を入れておきます。
<meta charset="UTF-8">
確認ポイント3:サーバー側の設定
- PHP なら、
header('Content-Type: text/html; charset=UTF-8');で文字コードを明示する - データベース(MySQL など)を使うなら、テーブルと接続の文字コードを
utf8mb4にそろえる - 古い
.htaccessにAddDefaultCharset Shift_JISのような設定が残っていないか確認する
確認ポイント4:古い FTP ソフトの転送設定
昔の FTP ソフトには、アップロードするときに文字コードや改行コードを自動で変換する機能があり、これが原因で文字化けすることもありました。今の FTP ソフトを使い、転送モードは「バイナリ」にしておくのが無難です。
PR
UTF-8 前提で WordPress も簡単に始められるサーバー
エックスサーバーなら、WordPress の簡単インストールや無料の SSL が用意されていて、文字コードの設定で悩むことはほとんどありません。古いホームページの引っ越し先としてもおすすめです。
まとめ
文字化けは「保存した文字コード」と「読む側が思っている文字コード」のずれで起きます。エディタは UTF-8(BOM なし)、HTML は meta charset、サーバーとデータベースも UTF-8(utf8mb4)と、全部を UTF-8 にそろえれば、ほとんどの文字化けは防げます。


コメント