Ruby で16進数表記の整数を UTF-8 文字列として出力する
前回の記事「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"