[pgsql-jp: 26074] Re: Windows環境でのpsql の文字化け

Tadafumi Kouzato grego @ pierrot.co.jp
2002年 5月 22日 (水) 15:56:18 JST


上里@ぴえろ です。

> Web上より、日本語Windows用のpsqlと、libpq.dllを
> ダウンロードし、このpsqlから、LinuxサーバのDB
> を検索し表示させたところ、日本語が文字化けを
> 起こしてしまいました。

私の場合、libpq.dll を使って文字化けするので、ソースから
コンパイルしました。

サーバーはDebian 3.0 + PostgreSQL7.2.1

何をどういう順序で試したのか詳しいことは覚えていないのですが、
最初は下記からlibpq.dllを貰って、VisualStudio.NETのC++で
書いたコードで試しました。
http://hp.vector.co.jp/authors/VA023283/PostgreSQL.html

クライアントプログラムでEUCのまま表示されているようなので、
コードのなかに下記を追加したところ、そういう関数はないとか
なんとかエラーがでました。
PQsetClientEncoding(conn,"SJIS");

それでlibpq.dllをソースからコンパイルして使ったところ
日本語も無事表示されるようになりました。
このときに注意しなくてはならなかったのは、
(1)コンパイル時にマルチバイトの指定をしなくてはならない
(2)DLLのdefファイルにマルチバイト用の関数名が書かれていないので
   追加した
ことです。

私の目的は上記で達成なので psql は気にしていなかったの
ですが、先ほどWindows版のpsqlを使ったところEUCのまま
表示されているようです。
これもpsqlをコンパイルしなおして
\encoding sjis
を行えば、日本語も無事に表示されました。

-------------------------------------------------
libpq.dll のビルド
nmake /f win32.mak CFG=MultibyteRelease

DEFファイルへ追加
	pg_char_to_encoding	@ 88
	pg_encoding_to_char	@ 89
	pg_encoding_mblen	@ 90
	pg_mule_mblen		@ 91
	pg_mic_mblen		@ 92
	pg_encoding_max_length	@ 93
	pg_valid_client_encoding	@ 94
	pg_valid_server_encoding	@ 95
	pg_utf_mblen		@ 96

psql.exe のビルド
 nmake /f win32.mak MULTIBYTE=MULTIBYTE

---------------------------------------------

=========================================================
   @)@)     PIERROT CO., LTD.       (株)ぴえろ
  (--- )    Tadafumi Kouzato         上里 直史
~~~~~~~~~~~                          grego @ pierrot.co.jp
=========================================================




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