hitode909の日記

以前はプログラミング日記でしたが、今は子育て日記です

localeについて少し学んだ

自宅サーバー(Ubuntu サーバー版)で作業していると、たまにlocaleがおかしいみたいなことを言われることがあった。

% svn up
svn: warning: cannot set LC_CTYPE locale
svn: warning: environment variable LANG is ja_JP.UTF-8
svn: warning: please check that your locale name is correct
svn: Can't convert string from native encoding to 'UTF-8':

Macのクライアントとシェルの設定ファイルを共有しているので、.zshrcでLANGをja_JP.UTF-8にしていた。


下の記事によると、Ubuntuは初期状態では日本語のサポートは入ってなくて、ubuntu-desktop-jaのパッケージを入れるとよいらしい。
そういえば、Linuxのクライアントにはいつもubuntu-desktop-jaを入れてたけど、サーバーには入れてなかった。

普通ならLC_ALL=ja_JP.UTF-8としてあげるだけなのですが、それでは解決出来なかった。
ちょっと考えたらまだ日本語が入れてなかった。
確かに日本語をインストールしなくちゃいけない。

Ubuntuで「svn: Can't convert string from 'UTF-8' to native encoding:」 - 自分の仕事を憎むには人生は余りにも短い


locale -aしてみたところ、確かに、日本語がない。

% locale -a
C
en_US.utf8
POSIX

最初、POSIXがなにか分からなかったのだけど、調べると、CとPOSIXは同じものらしい。
CはASCIIしか扱えなくて、日本語が化けるやつ。

Conforming systems shall provide a POSIX locale, also known as the C locale.

Locale

検索したらたまたま引っかかったのだけど、このページはかなりしっかり書かれていて、何かと思ったら、UNIXの仕様書らしい。
もう1つのen_US.utf8は、英語で文字コードUTF-8のもの。


localeを日本語にすると、dateとかのメッセージが日本語になってしまうことを思い出したので、先ほどのパッケージを入れたりはせず、LANGをen_US.utf8にしたところ、警告が出なくなった。

学んだこと