プロクラ(クラウドAIロボット、詳しい役)SabaKore

よくある質問

データベースの文字化けを直す:どこでずれたのかを特定する

2026年8月20日

この記事はAIが下書きを作成しています。内容に誤りに気づいた場合はお問い合わせよりお知らせください。

レン(新米インフラエンジニア)・がーん

レン

サーバーを移したら、日本語が全部おかしな記号になってる…!
プロクラ(クラウドAIロボット、詳しい役)・教える

プロクラ

文字化けは、どこか1か所の指定がずれると起きる。しかも関わる場所が多いから、当てずっぽうで直そうとすると余計にこじれるんだ。順に切り分けよう。

関わる場所は4つ

  • データベース・テーブル・列に設定された文字コード
  • アプリがデータベースへ接続するときに指定する文字コード
  • アプリ自身が扱う文字コード
  • ブラウザへ送るときに宣言する文字コード
プロクラ(クラウドAIロボット、詳しい役)・分析中

プロクラ

この4つが揃っていれば化けない。逆に、どれか1つでもずれていると化ける。だから「どこがずれているか」を突き止めるのが仕事になる。

切り分ける

プロクラ(クラウドAIロボット、詳しい役)・教える

プロクラ

画面で化けているとき、まずデータベースの中身が正しいのかを確かめよう。ここが正しいかどうかで、原因の範囲が半分になる。
  • コマンドで直接データベースに接続し、中身を表示してみる
  • そこで正しく読める → 保存は正常。取り出しか表示の問題
  • そこでも化けている → 保存の時点でずれている。より深刻
  • 接続時に文字コードを指定してから確認すると、より確実
プロクラ(クラウドAIロボット、詳しい役)・困った

プロクラ

保存の時点で化けている場合、元の文字は失われていることがある。だからこそ、移行のときは事前の控えが重要なんだ。

移行で化けさせない手順

プロクラ(クラウドAIロボット、詳しい役)・分析中

プロクラ

移行時の文字化けは、書き出しと取り込みで指定が食い違うのが原因。ここを揃えれば、ほとんど防げるよ。
  • 書き出すとき、文字コードを明示して指定する
  • 取り込むとき、同じ文字コードを明示して指定する
  • 取り込み先のデータベースの設定も、同じにしておく
  • 作業の前に、化けていない状態の控えを別に取っておく
プロクラ(クラウドAIロボット、詳しい役)・OK

プロクラ

4つめが保険になる。化けた状態で上書きしてしまうと戻せないので、元のファイルは必ず別に残しておこう。

絵文字が入らない場合

プロクラ(クラウドAIロボット、詳しい役)・教える

プロクラ

文字化けとは少し違うけれど、絵文字だけが保存できない、という症状もある。古い設定のまま作られたデータベースだと、絵文字を扱えない文字コードになっていることがあるんだ。
  • 投稿に絵文字を含めるとエラーになる、または途中で切れる
  • 対応する文字コードへ変更する必要がある
  • 変更はテーブルと列の両方に対して行う
  • 変更前に必ず控えを取る
レン(新米インフラエンジニア)・できた

レン

まずデータベースの中身が正しいかを見る。そこで範囲が半分になるんだね。

「?」や「□」に化けている場合

プロクラ(クラウドAIロボット、詳しい役)・分析中

プロクラ

化け方でも原因の見当がつくよ。読めない記号が並ぶ場合と、すべてが同じ記号に潰れている場合では、起きたことが違う。
  • 読めない文字が並ぶ → 別の文字コードとして解釈されている。元の情報は残っている可能性がある
  • すべてが「?」に潰れている → 保存の時点で失われている。戻せないことが多い
  • 一部の文字だけ化ける → 扱える文字の範囲が足りていない(絵文字など)
  • 表示だけ化けて、別の画面では正しい → 宣言している文字コードの問題
プロクラ(クラウドAIロボット、詳しい役)・困った

プロクラ

2つめになってしまうと、控えが無い限り復元できない。だから移行前の控えは、化ける前に取ることが決定的に重要なんだ。

あわせて読みたい

→ コラム記事をすべて見る(カテゴリ・事業者で絞り込めます)

サーバーを触る前に押さえておきたいこと

姉妹サイトの、この記事と相性のいいページです。