CentOSでrootのときだけ日本語が文字化けする時の原因と対処方法

公開日:2018/02/10 更新日:2018/02/10
CentOSでrootのときだけ日本語が文字化けする時の原因と対処方法のサムネイル

はじめに

さくらVPSでCentOSを使いはじめたところ、一般ユーザで使用している時はvimなどのエディタで編集していても日本語が問題なく表示されていましたが、root権限で同様に編集のためにファイルを開いたら日本語が文字化けしてしまいました。以降ではこの原因と対処方法についてメモします。

環境

OS : CentOS 7 (さくらVPS)

原因

原因は単純で、言語設定のための文字コードが一般ユーザとrootユーザで異なる値に設定されていて、rootユーザで設定されている文字コードが日本語に対応してないためになります。 よって、rootユーザにログインしている状態で、文字コードを設定している環境変数LANGの値を日本語表示のために適切な値に変更すれば解決できます。 なお、環境変数LANGについては以下のサイトにて分かりやすく解説されていて参考になります。ありがとうございます。 Linuxのローカライゼーション系LANG変数:langについて | エンジニアの入り口

文字コードの確認

まずは例として一般ユーザで設定されている文字コード確認してみます。以下のようにechoコマンドで環境変数$LANGを表示しています。

$ echo $LANG
ja_JP.UTF-8

上記のように、文字コードとしてja_JP.UTF-8が環境変数LANGに設定されていることが確認できます。 続いて今度はrootで同じコマンドを実行して確認してみます。

$ su -
パスワード:
[root@www ~]# echo $LANG
C

上記のとおりrootではCという文字コードが設定されていることわかります。これはデフォルトで設定されており、日本語表示はできません。 これを一般ユーザと同様に、ja_JP.UTF-8に変更すれば解決できます。 具体的には、/etc/sysconfig/i18nに記述されているLANGの値をja_JP.UTF-8に変更します。

# vi /etc/sysconfig/i18n

viで開いてみると、以下の部分を見つけられると思います。

LANG="C"
SYSFONT="latarcyrheb-sun16"

ここのCを以下のようにja_JP.UTF-8に変更します。

LANG="ja_JP.UTF-8"
SYSFONT="latarcyrheb-sun16"

以上で完了です。最後に、改めて環境変数LANGを表示してみます。

# echo $LANG 
ja_JP.UTF-8     

まとめ

Linuxを使っていると、細かいところでつまづくことが多いですがそれを解決する度に新しい知識がつきくのが面白いです。

開発アプリ

nanolog.app

毎日の小さな出来事をなんでも記録して、ログとして残すためのライフログアプリです。