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

セットアップ

サーバーで日本語が文字化けする:ロケールの設定

2026年8月20日

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

レン(新米インフラエンジニア)・悩む

レン

SSHでログインしたら、日本語のファイル名が全部おかしな記号になってる…
プロクラ(クラウドAIロボット、詳しい役)・教える

プロクラ

文字の扱い方の設定が噛み合っていないんだ。これはサーバー側だけの問題ではなくて、接続している側との組み合わせで決まる。両方を見る必要があるよ。

どちらがずれているか

  • locale コマンドで、サーバー側の設定を確認する
  • UTF-8になっていなければ、そこが原因の可能性が高い
  • 接続に使っている端末ソフトの文字コード設定も確認する
  • 両方がUTF-8で揃っていれば、通常は化けない
プロクラ(クラウドAIロボット、詳しい役)・分析中

プロクラ

サーバー側が英語のまま(Cロケール)になっていることが多いよ。これは既定としては妥当な設定で、壊れているわけではない。日本語を扱う必要が出たときに、初めて問題になる。

設定する場所

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

プロクラ

設定できる場所がいくつかあって、優先順位がある。どこで設定するかによって、影響する範囲が変わるよ。
  • システム全体の設定(すべてのユーザー・すべてのプログラムに影響)
  • ユーザーごとの設定(自分のログイン時だけ)
  • その場だけの設定(今のセッションのみ)
  • 定期実行から動くプログラムには、また別の環境が使われる点に注意
プロクラ(クラウドAIロボット、詳しい役)・困った

プロクラ

4つめが落とし穴だよ。手で実行すると正しく表示されるのに、定期実行だと文字化けする、という症状の原因になる。定期実行の中で明示的に指定するのが確実だ。

必要な言語データが入っているか

  • 指定した設定が使えるかは、locale -a で一覧を確認する
  • 一覧に無ければ、その言語のデータを追加する必要がある
  • 追加は、パッケージの導入や生成のコマンドで行う
  • 指定しても反映されない場合、これが原因のことがある

あえて英語のままにする判断

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

プロクラ

実は、サーバー側を英語のままにしておく利点もあるんだ。エラーメッセージが英語で出るほうが、検索して情報を見つけやすい。
  • 英語のメッセージは、そのまま検索できる情報量が多い
  • 手順書や公式の資料も、英語の表示を前提にしていることが多い
  • 日本語のファイル名を扱う必要が無いなら、変える理由は薄い
  • 扱う必要があるなら、文字コードだけUTF-8にして、表示は英語という選択もある
プロクラ(クラウドAIロボット、詳しい役)・OK

プロクラ

最後が現実的な落としどころかな。日本語のファイル名が正しく扱えて、メッセージは英語のまま。調べやすさと実用性の両方が取れるよ。
レン(新米インフラエンジニア)・できた

レン

サーバーと端末の両方を見る。定期実行では別に指定が要るんだね。

データベースの文字コードとは別の話

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

プロクラ

混同しやすいので分けておこう。ここで扱っているのは、サーバー上での表示やファイル名の話。データベースに保存された文字が化けるのは、また別の設定だよ。
  • 端末での表示・ファイル名 → ロケールの設定
  • データベースの中身 → データベース側の文字コード設定
  • Webページの表示 → 送信時に宣言する文字コード
  • どれも独立しているので、症状が出た場所で切り分ける

あわせて読みたい

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

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

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