[pgsql-jp: 40636] Re: encodeで日本語が表示できない

Itagaki Takahiro itagaki.takahiro @ gmail.com
2010年 12月 21日 (火) 20:40:02 JST


2010/12/21 嶋崎 崇子 <taka-shimazaki @ secom.co.jp>:
> select encode(decode('pKKkpKSmpKikqg==', 'base64'), 'escape');
> で「あいうえお」と戻してもらえるのですが、
> 新バージョン(8.4.5)の環境ではマルチバイトの文字ではなく
>  ¥244¥242¥244¥244¥244¥246¥244¥250¥244¥252
> という文字コード(?)で返ってきてしまいます。
>
> どのようにすれば、「あいうえお」という文字列が返ってくるのか
> ご存知の方、ご教示頂けますでしょうか。

もともとの encode('escape') の使い方が正しく無いような気がします。
bytea から文字列への変換なので、convert_from() を使うのでは?

=# select convert_from(decode('pKKkpKSmpKikqg==', 'base64'), 'euc_jp');
 convert_from
--------------
 あいうえお
(1 行)

なぜ 8.1 だと動作するのかまでは調べてません。
PGの古いバグをうっかり利用してしまっていたようにも見えますが…。

-- 
Itagaki Takahiro


pgsql-jp メーリングリストの案内