Open Source WEB

MySQLでの文字列処理の動作を調べる前に、そのときに利用する ツールについてちょっとだけ書いておく。 MySQLのためというより、文字列について調べるには常に必要なものである。

文字列を扱うとき、どういうバイト列かを16進表示して、 はっきり確認したくなる。 文字列処理について原因を究明したい場合の手段である。

なお、本ページの文字コードは、すべてEUC-JPになっている。


od

Unixでダンプするといったら、なんといっても od だろう。

$ echo -n '漢字表示' | od
0000000 140664 175273 136711 124274
0000010

od は octal dump のことなので、デフォルトは8進ダンプになってしまう。 文字列を扱おうとしているので、これでは都合が悪い。

16進ダンプするには、 -x とするようだ。

$ echo -n '漢字表示' | od -x
0000000 c1b4 fabb bdc9 a8bc
0000010

「漢」が c1b4 と表示されたが、変である。 EUCーJPでは、漢のコードは b4c1 なのである。 どうも、2バイト単位で勝手にまとめてくれるようで、困ったものである。

$ echo -n '漢字表示' | od -tx1
0000000 b4 c1 bb fa c9 bd bc a8
0000010

これで、やっと使い物になってきた。 ということで、バイト単位の16進ダンプの方法だけ憶えておこう。

バイト単位の16進ダンプ: od -tx1


hexdump

hexdumpという、16進ダンプならこれ、というようなコマンドが用意されている。 しかし、それほど便利なものではないと私は思っていて、使っていない。

echo -n '漢字表示' | hexdump
0000000 c1b4 fabb bdc9 a8bc
0000008

これだと、2バイト単位であり、バイトが逆順になってしまうので、 -C をつけると、1バイト単位、要するにCharacter単位になる。

$ echo -n '漢字表示' | hexdump -C
00000000  b4 c1 bb fa c9 bd bc a8                           |........|
00000008

詳しくは、man を見よう。


xxd

16進ダンプと、16進数ダンプからの元にもどすこともできるコマンドがある。

$ echo -n '漢字表示' | xxd
0000000: b4c1 bbfa c9bd bca8                      ........

デフォルトでは、2バイトずつになるので、1バイトずつにするには -g のあとに、バイト数を書く。 gとはちょっと変な感じなんだが、groupのことである。

$ echo -n '漢字表示' | xxd -g 1
0000000: b4 c1 bb fa c9 bd bc a8                          ........

ぜんぶ繋げた出力が欲しければ、-g 0 とする。

$ echo -n '漢字表示' | xxd -g 0
0000000: b4c1bbfac9bdbca8                  ........

アドレスなど余分なものをつけたくない時には、-p をつける。 このときは、-g 0 に勝手になるようだ。

$ echo -n '漢字表示' | xxd -p
b4c1bbfac9bdbca8

16進表示ではなく、2進表示が欲しければ、-b である。

$ echo -n '漢字表示' | xxd -b
0000000: 10110100 11000001 10111011 11111010 11001001 10111101  ......
0000006: 10111100 10101000         

では、逆変換をやってみよう。

$ echo -n 'b4 c1 bb fa c9 bd bc a8' | xxd -r -p
漢字表示$ echo -n 'b4c1bbfac9bdbca8' | xxd -r -p
漢字表示

xxdは逆変換するので、漢字表示と出力されるが、改行はされない。 途中にスペースがあってもなくても同じように逆変換される。 -p がないと、16進ダンプした形式、つまりアドレスも必要になる。

まだまだ機能はあるが、詳しくは man xxd を見よう。

16進ダンプ:  xxd -g 1

16進逆ダンプ: xxd -r -p


戻る:使用可能なキャラクタセット

次へ:キャラクタコード変換ツール(nkf, iconv, kcc)


フィードバック:

Name:
Comment:

There is no comment.

このサイトは、 IPA の「平成15年度オープンソフトウエア活用基盤整備事業」 の委託事業として開発されたKahuaで試験的に運用しております。

Copyright (c) 2004-2007 株式会社タイムインターメディア About Us