2010年12月21日

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

2010/12/21 嶋崎 崇子 <taka-shimazaki@xxxxx>:
> 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

投稿者 xml-rpc : 2010年12月21日 20:40
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/100895
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。