CentOSでrootのときだけ日本語が文字化けする時の原因と対処方法
はじめに
さくらVPSでCentOSを使いはじめたところ、一般ユーザで使用している時はvimなどのエディタで編集していても日本語が問題なく表示されていましたが、root権限で同様に編集のためにファイルを開いたら日本語が文字化けしてしまいました。以降ではこの原因と対処方法についてメモします。
環境
OS : CentOS 7 (さくらVPS)
原因
原因は単純で、言語設定のための文字コードが一般ユーザとrootユーザで異なる値に設定されていて、rootユーザで設定されている文字コードが日本語に対応してないためになります。
よって、rootユーザにログインしている状態で、文字コードを設定している環境変数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を使っていると、細かいところでつまづくことが多いですがそれを解決する度に新しい知識がつきくのが面白いです。
関連記事
- 公開日:2022/09/11 更新日:2022/09/11
Google Compute EngineのインスタンスにSSH接続できなくなった時の対処方法
Google Compute EngineのインスタンスにSSH接続できていたのにSSHの設定ミスや原因不明でSSH接続できなくなった時の対処方法をメモします。自分のPCからだけでなく、Google Cloud Platform上での管理画面からもSSHできない場合にも有効です。
- 公開日:2022/09/08 更新日:2022/09/08
Google Compute EngineのインスタンスにSSH接続する
Google Compute Engineのインスタンスにssh接続するための手順をまとめます。
- 公開日:2017/12/09 更新日:2017/12/09
サーバ上のディレクトリをローカルにマウントするsshfsの使い方
Linuxでは、サーバ側のディレクトリを自身のローカルPCにマウントして、ローカル上のディレクトリして使用することができるsshfsというコマンドが用意されています。ここではこのsshfsの使い方をメモします。
- 公開日:2017/08/27 更新日:2017/08/27
MacでubuntuのインストールUSBを作成する方法と手順
MacでubuntuのインストールUSBを作成する手順をメモします。ここで載せる手順はターミナルでのコマンドによる方法になります。