[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 メーリングリストの案内