Linuxサーバーで日本語ファイル名(全角)を使うということはあまり無いのですが、ユーザー任意のファイルアップロードや、SAMBAサーバー化している場合、どうしても日本語ファイルが入り込んできます。
僕の場合は、自宅の膨大な本棚をデジタル化して、ファイル名をそのまま保存しているので、日本語対応していないとかなり使いづらいというワケなんですね。
Ubuntuを使っている人は、GUIで使っている場合が多いと思いますが、その場合は、言語ツールがあるので、そちらを利用してください。
今回は、あくまでCUI環境においての日本語化です。
もちろん、日本語環境を構築すると、その分サーバーのOS容量が大きくなってしまうので、必要に感じた人のみ下記操作を実施してみてください。
※自己責任でお願いします。
日本語環境が必要なワケ
ちなみに、今回日本語環境にしようと思ったのは、日本語ファイル名の書籍データをlsコマンドでリストアップした時に、文字化けして、ファイル選別が出来なかったという事と、
書籍ファイルが圧縮ファイルだった場合に解凍すると、中から日本語フォルダやファイルが入っていると、下記のようなエラーが発生してしまう事象があり、日本語環境が必須になりました。
unar: Uncaught exception NSCharacterConversionException, reason: Can't get cString from Unicode string.
これは、「使えない文字エンコードですよ」っていうお叱り文ですね。
Linux環境
今回作業した環境を書いておきます。(コレ以外の環境の人は別のやり方が必要です。スミマセン・・・)
OS: Ubuntu 16.04.1 LTS
CPU: Intel(R) Core(TM) i7-6567U CPU @ 3.30GHz
Memory: 2GB
実はこの環境、Dockerで構築した環境なので、CPUやメモリは、この参考値ではあまり関係ないですね。
日本語環境構築で行った作業履歴
まずは「locale」コマンドで現在のlang情報の確認
$ locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=
LANGに何もセットされていないことがわかります。
そして、下記コマンドを実行。
$ sudo apt-get install language-pack-ja
$ sudo update-locale LANG=ja_JP.UTF-8
$ sudo export LANG=ja_JP.UTF-8
無事にファイル名も日本語で表示され、unarアーカイブも正常に動作したので、一先ず成功とします。
$ locale
LANG=ja_JP.UTF-8
LANGUAGE=
LC_CTYPE="ja_JP.UTF-8"
LC_NUMERIC="ja_JP.UTF-8"
LC_TIME="ja_JP.UTF-8"
LC_COLLATE="ja_JP.UTF-8"
LC_MONETARY="ja_JP.UTF-8"
LC_MESSAGES="ja_JP.UTF-8"
LC_PAPER="ja_JP.UTF-8"
LC_NAME="ja_JP.UTF-8"
LC_ADDRESS="ja_JP.UTF-8"
LC_TELEPHONE="ja_JP.UTF-8"
LC_MEASUREMENT="ja_JP.UTF-8"
LC_IDENTIFICATION="ja_JP.UTF-8"
LC_ALL=
他にもDebian環境や、CentOS環境でも、同様の事象があると思うので、今後調査しておきたいと思います。
この記事に関して、抜け漏れ追加情報などあれば、コメントください。