菊地です。 おそらく、文字コード変換が2箇所あることが混乱されているような気がします。 データベースサーバとそのクライアントプログラムの間の文字コードと、 クライアントプログラムが表示の時に使用される文字コードの設定と....
ikesan wrote: > いけさん です。 > > On Sun, 27 Nov 2005 22:17:33 +0900 > "T.P.S.Nakagawa" <[EMAIL PROTECTED]> wrote: > > >> データベースそのものは、どういう charset で作成されているのですか? > > > DBはデータを透過的に格納します。 これは、正しいようですが、透過的になるのは正しい文字セットを使用したときでしょうか。 PostgreSQLでは、サーバーエンコーディングに何を使用するかによって変わってきます。 SQL_ASCIIでは全く変換されませんので、そのまま格納されると思われます。(おそらく) その他のエンコーディングでは、自動的に変換がかかります。(PostgreSQLのコンパイル オプションで変更可だが、バージョンによってはディフォルトの動作が違っている可能性あり) 自動変換については、組み合わせによって違うようなので、マニュアルを参照しましょう。 作成したときはどのようにしたのでしょうか。提示がありませんが.. 1. initdb -E EUC_JP などのようにinitdbでやった。 2. createdb -E EUC_JP japanese などのようにやった。 3. CREATE DATABASE japanese WITH ENCODING 'EUC_JP'; のようにやった。 (4. その他 コンパイル時のディフォルトエンコーディング) のいずれかだと思いますが、>psql -l の結果などがあると良いかもしれません。 > > >>> 環境 UTF-8 EUC-JP >>> tool PgAdmin3 OOo.Base psql PgAdmin3 OOo.Base psql >>> PostgreSQL >>> UNICODE ok ok ok ok ok 文字化け >>> SQL_ASCII(EUC-JP) 文字化け 文字化け -- 文字化け 文字化け ok > 考えられるのは、DBがunicode(UTF-8)の場合には、環境が何であろうと、DBサーバ (postmaster)とクライアントプログラムの間ではUTF-8でしかデータの受け渡しは されていないと思います。そして、PgAdmin3とOOo.Baseでは、内部コードもUnicodeという 点では正しく動作するでしょう。環境はそれぞれのクライアントが表示するために使用する 環境ですので、 unicode(UTF-8)を使用して、EUC_JPのpsqlが文字化けするのは、client_encoding設定が 正しくないか、設定していないということはないでしょうか? もしそうなら、設定して試してみるのも一考かと思われます。 1. psqlで\encodingを使用する。ex) \encoding EUC_JP 2. SET CLINET_ENCODING TOを使用する ex) SET CLIENT_ENCODING TO 'EUC_JP' 3. 環境変数PGCLIENTENCODINGに文字セットを設定しておく。 としておかないと、psqlでは文字化けしてしまうと思います。 > > EUC-JP 環境では SQL_ASCII で作成し、アプリからは EUC-JP のコードでデータ > を格納し、運用して来ています。 これは、”たまたま運良く”運用できていると思われます。 PostgreSQLのマニュアルには、7bit-ascii以外は、推奨しないとなっています。 全く変換しないので、SORTやLIKEなどは正しく動作していないように思われます。 > テスト用に UTF-8 環境で作成したDBは UNICODE で作成し、 UTF-8 のコードで > データを格納しました。 > もちろん SQL_ASCII で作成したDBに UTF-8 のデータを格納する事も可能です。 > このばあいは EUC-JP 環境の psql で文字化けします。 > PgAdmin3 等を使ってテストもしています。 可能かもしれませんが、sqlで操作(比較・ソートなど)は多分正しくできないと思います。 >> データベースの charset 設定が EUC-JP でも、UTF-8 にして >>表示してくれるということです。 > これは、PostgreSQLのマニュアルを参照しているのでしょうか? SQL_ASCIIについては変換してはくれません。 > > これについては > http://www.pgadmin.org/pgadmin3/faq/#EncodingProblem > ご覧になるといいでしょう。 この文書にもSQL_ASCIIは問題ありとなっているようですが?
