ホームページや PHP の文字化けを防ぐ4つの確認ポイント【UTF-8 にそろえる】

崩れた文字が整った文章に直るブラウザ画面のイラスト ホームページ・サーバー

自分で作ったホームページや 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 ソフトを使い、転送モードは「バイナリ」にしておくのが無難です。

今回、このブログを作り直すときにも、Shift_JIS で書かれた古いページがファイルマネージャで開けない、ということがありました。古いサイトを触るときは、そのファイルが何の文字コードで書かれているかを最初に確認するのがおすすめです。

PR

UTF-8 前提で WordPress も簡単に始められるサーバー

エックスサーバーなら、WordPress の簡単インストールや無料の SSL が用意されていて、文字コードの設定で悩むことはほとんどありません。古いホームページの引っ越し先としてもおすすめです。

エックスサーバーの公式サイトを見る

まとめ

文字化けは「保存した文字コード」と「読む側が思っている文字コード」のずれで起きます。エディタは UTF-8(BOM なし)、HTML は meta charset、サーバーとデータベースも UTF-8(utf8mb4)と、全部を UTF-8 にそろえれば、ほとんどの文字化けは防げます。

コメント

タイトルとURLをコピーしました