Ruby で16進数表記の整数を UTF-8 文字列として出力する

2007/12/10 10:16am

前回の記事「PostgreSQL 7.4.13 以降、異なるエンコーディングでの変換エラー」でも書いたように、PostgreSQL で以下のようなエラーが出るようになった。

ERROR:  22P05: character 0xe28094 of encoding "UNICODE" has no equivalent in "EUC_JP"

では、character 0xe28094 とは、どの文字なのか。

PostgreSQL では UNICODE という名前のエンコーディングは UTF-8 のことなので、Ruby の Array#pack を使えば、0xe28094 という16進数表記の整数を UTF-8 文字列に変換できる。

ruby -e 'puts [ARGV[0]].pack("H*")' "e28094"