2月 10 2009

FreeBSD の od の -c オプションは日本語が表示できる

Published by HoLY at 17:07:29 under tech

Linux だと od の -c オプションで ASCII 文字が表示されるわけですが、日本語は表示できません。こんな感じ。

$ echo $LANG
ja_JP.UTF-8
$ touch 日本語.txt
$ ls
日本語.txt
$ ls | od -xc
0000000 97e6 e6a5 ac9c aae8 2e9e 7874 0a74
        346 227 245 346 234 254 350 252 236   .   t   x   t  \n
0000016

しかし FreeBSD の od で同じことをやると、Locale に従って日本語で表示されるではありませんか。

$ echo $LANG
ja_JP.UTF-8
$ touch 日本語.txt
$ ls
日本語.txt
$ ls | od -xc
0000000      97e6    e6a5    ac9c    aae8    2e9e    7874    0a74
          日  **  **  本  **  **  語  **  **   .   t   x   t  \n
0000016
$ export LANG=ja_JP.eucJP
$ ls * | nkf -We | od -xc
0000000      fcc6    dccb    ecb8    742e    7478    000a
          日  **  本  **  語  **   .   t   x   t  \n

FreeBSD の方の man odを見ると、-c はこうなってる。

デフォルトの文字集合での文字。 表示できない文字は 3 桁の 8 進数文字コードで表現されます。ただし、次の文字は C エスケープで表現されます: (略)

「ASCII」 じゃなくて 「デフォルトの文字集合」 ってのがミソですね。man を見る限り FreeBSD 4.7 からそうなってたのかしらん。知らなかった…。ちなみに hexdump の -c オプションは「ASCII」だそうな。Linux の man od も「ASCII」と。

Linux みたいな挙動しか期待してなかったので、ちょっと嬉しくてエントリ化。

ちなみにググる限り Solaris とかもそうっぽい。他の *BSD とかも含め手元に環境がないからわからん。

Tags: ,

No responses yet

Trackback URI | Comments RSS

Leave a Reply