日本語のファイルを多数入れたディレクトリを、UbuntuのデフォルトのファイルマネージャーのNautilusで見たところ、不思議な挙動に気がついた。ファイル名のソートがなにかおかしい。不思議に思ってlsを使ってみると、やはりソートがおかしい。なぜか。Ubuntuのデフォルトのロケール設定のためである。
Ubuntuでは、デフォルトのLC_COLLATEは、en_US.UTF-8になっている。このままでは、ASCII内の文字ぐらいしかソートされない。CJK文字のソートは、どうもよく分からない不思議な順序で比較される。
ロケールというのは厄介だ。たとえば、ある言語では、アクセント記号の有無で別のコードポイントが割り当てられている文字があるが、そのような文字は同じ文字として扱ってほしいため、その言語のロケールの文字の比較は、そのように振る舞う。しかし日本語では、あまりロケールでなにかして欲しくない。思うに、日本語文字はやや複雑すぎて、何か賢そうなことをしようとすると、かえって悪い結果になるのだと思う。日本語環境における文字のソートは、単に生のコードポイントの大小比較の方がよっぽどましだ。
というわけで、日本人ならUbuntuのLC_COLLATEを"C"に変更すべきである。
- テキストエディタで、"~/.profile"を開く。
- 「export LC_COLLATE="en_US.UTF-8"」を、「export LC_COLLATE="C"」に書き換える。
- ログインしなおす
lsやNautilusがCJK文字をコードポイントの順序でソートしていることを確認する。
No comments:
Post a Comment