[pgsql-jp: 37199] Re: PQescapeStringのreturn値について

Tatsuo Ishii ishii @ sraoss.co.jp
2006年 6月 10日 (土) 08:40:30 JST


石井です.

> 中野と申します。
> 
> > 確認してみたところ、当方のクライアントエンコーディング設定が
> > 
> > PQexec(conn, "SET CLIENT_ENCODING TO sjis")
> > 
> > で行っており、これが元凶でした。
> > 石井さんのサンプルコード通りPQsetClientEncodingで設定したところ、正常動
> > 作しました。

ほう,そうですか?

> 初歩的な質問かもしれないのですが、libpqプログラムでクライアントエンコー
> ディングを設定する場合、PQexec(conn, "SET CLIENT_ENCODING TO ...")ではだ
> めだというのは、常識なのでしょうか?(というのも、知らなかったものですか
> ら。。)

そんなことはないです.

PQexec(conn, "SET CLIENT_ENCODING TO sjis");

で問題ないです.もし本当にこれで駄目だとすると,可能性は三つ.

1) libpqのバージョンが古い.古いバージョンのlibpqでは,確かにSET
   CLIENT_ENCODING TO sjisでは駄目なものがあります.

2) コーディングミスでPQexecの実行に失敗している.

3) 実行順序の問題.PQescapeStringの実行前にPQexec(conn, "SET
   CLIENT_ENCODING TO sjis")を実行していない.

というところですかね.
--
Tatsuo Ishii
SRA OSS, Inc. Japan



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