はじめに
日本語が文字化けして、四角に表示される(俗に言う、Tofu 豆腐 )であったため、日本語表示の環境を設定する。
環境
Ubuntu 16.04.5 LTS
Windows10
Vagrant
手順
環境変数を確認すると、英語環境であるため、環境変数を日本語に変更する
echo $LANG
en_US.UTF-8
2つの日本語パッケージ(language-pack-ja-baseとlanguage-pack-ja)をaptでインストールする
sudo apt install language-pack-ja-base language-pack-ja
ホームに移動して、.bashrcの一番下に下記を追加する
case $TERM in
linux) LANG=C ;;
*) LANG=ja_JP.UTF-8;;
esac
解説
$TERMの環境変数には、ターミナルの種類がセットされる。因みに、自分の環境では、xterm-256colorがセットされている。ターミナルの種類がlinuxの場合は、ローカライゼーションをCにして、それ以外の場合は、日本語にしている。ターミナルの種類がlinuxというのは、クライアントからターミナルでSSH接続して使うのではなく、サーバーを直接触る場合になる。この場合、日本語にすると逆に文字化けを起こすようなので、英語環境にするために、Cをセットしている。サーバーを直接触る事はないよという場合であれば、LANG=ja_JP.UTF8の1行のみでもOK
.bashrcを実行して反映させる
source .bashrc
日本語パッケージをインストールすると、/var/lib/locales/supported.dに、jaというファイルが追加されるので中身を確認する。
cat /var/lib/locales/supported.d/ja
ja_JP.UTF-8 UTF-8
インストール済のロケールの一覧を表示して、ja_JP.utf8が表示される事を確認する
locale -a | grep ja
デフォルトのロケールを確認すると英語になっています
cat /etc/default/locale
# File generated by update-locale
LANG="en_US.UTF-8"
LANGUAGE="en_US:"
デフォルトのロケールを、日本語に変更する。エラー?と思われるメッセージが表示されるが、ちゃんと更新されています。
sudo update-locale LANG=ja_JP.UTF-8
*** update-locale: Warning: LANGUAGE ("en_US:") is not compatible with LANG (ja_JP.UTF-8). Disabling it.
変更された事を確認する。日本語が追加されて、英語はコメントされました
cat /etc/default/locale
# File generated by update-locale
LANG=ja_JP.UTF-8
#LANGUAGE="en_US:"
vagrant環境である場合、Windows側(PowerShell側)の文字コード環境が原因である事もある。上記でも問題が解決しない場合は、↓
https://qiita.com/FmtWeisszwerg/items/ccd34acfb2e88c2fb35f
追加情報
↑にある、PowerShell側で、chcp 65001をしても解決しない場合、PowerShellのプロパティで、フォントをMSゴシックに変更すると、PowerShellで表示される日本語のtofuを正しく表示されるようになった。