[pgsql-jp: 41586] Re: 文字コード取得方法

Tomoaki Sato sato @ sraoss.co.jp
2014年 3月 8日 (土) 10:03:14 JST


佐藤です。

> 佐野です。
> 
>> => select encode(c::bytea, 'hex') from t;
>>  encode
>> --------
>>  e38182
>> (1 行)
> 
> 回答ありがとうございます。
> やりたいことは上記内容であっています。
> 
> 上記にてVarchar型に格納されているフィールド名を指定してSQLを
> 実行すると、下記エラーが発生します。
> Varchar型で実行することはできないでしょうか?
> 
> エラー:
>  ERROR: cannot cast type character varying to bytea
>  SQLステート:42846

PostgreSQL 8.2 でしたね。8.2 なら

=# SELECT encode(decode(c, 'escape'), 'hex') FROM t;
 encode
--------
 e38182
(1 row)

でいけます。

>> 佐藤です。
>> 
>> > 佐野です。
>> >
>> > 先ほどの内容を訂正いたします。申し訳ありません。
>> >
>> > エンコードではなく、文字列よりutf-8文字コードが知りたいです。
>> > 誤:EUC文字コード 正:utf-8文字コード
>> 
>> => select c from t;
>>  c
>> ----
>>>> (1 行)
>> 
>> => select encode(c::bytea, 'hex') from t;
>>  encode
>> --------
>>  e38182
>> (1 行)
>> 
>> ということですかね。
>> 
>> > 現状ODBC経由で文字列を取得するとUnicodeに変換されるため
>> > DBに格納されているutf-8文字コードが分からない状況です
>> >
>> >> 佐野です。
>> >>
>> >> 説明不足でした。すみません。
>> >>
>> >> エンコードではなく、文字列よりEUC文字コードが
>> >> 知りたいです。
>> >>
>> >> 現状ODBC経由で文字列を取得するとUnicodeに変換されるため
>> >> DBに格納されているEUCコードが分からない状況です
>> >>
>> >> > 佐藤です。
>> >> >
>> >> > > 佐野と申します。
>> >> > > Postgreの文字列取得について質問があります。
>> >> > >
>> >> > > Postgreサーバ(8.2.14 utf-8)に格納されている
>> >> > > 文字列から文字コードを取得する方法を教えていただけないでしょうか
>> >> >
>> >> > 文字エンコーディングが UTF8 のデータベースに格納されている文字列の
>> >> > 文字エンコーディングは UTF8 では?
>> >> >
>> >> > => select current_setting('server_encoding');
>> >> >  current_setting
>> >> > -----------------
>> >> >  UTF8
>> >> > (1 行)


----
Tomoaki Sato <sato @ sraoss.co.jp>
SRA OSS, Inc. Japan


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