プロが教える店舗&オフィスのセキュリティ対策術

文字コードの設定する場所って
何箇所かあると思うんですが
教えてもらえないでしょうか

psql -l
Database | Owner | Encoding
-----------+----------+-----------
template1 postgres SQL_ASCII

php.ini
i18.internal_encoding = SJIS

後、ありましたら教えてください
違うマシンで同じ環境を作ろうしているのですが
できなくて困っています

Redhat6.2J
postgres 7.0.2
php3.0.18

A 回答 (5件)

postgresの方の文字コードですが、postgresの内部でデータをどの形式で持つかです。



initdbは、postgresインストール直後の設定時で、1回だけで、データの位置などを指定します。-Eオプションで、createdbでDBを作成するときのデフォルトのデータ形式が指定できます。

createdbは、データベースの作成で、これもDBで1回だけ指定できます。

という訳で、すでにデータが入っているということですから、このパラメータを指定することは出来ませんね。

ただ、rpmで、単純にインストールしたあと、initdbでもcreatedbでも-Eの指定をしていしてないとなると、データ形式がデフォルトのままですから、日本語の処理が出来る状態ではないかもしれません。とは言っても文字として比較する分には、コードの種類さえあっていれば、それほど問題ないかもしれませんが、-Eなどの指定があるのですから、やはり問題がありそうですね。
    • good
    • 0

postgres 7.0以降であれば、



initdb -E EUC_JP

でデフォルトをEUC_JPにする。

データベース作成時に指定する

createdb -E EUC_JP データベース名

が出きると思いますので、コンパイルしなくても大丈夫だと思いますよ。

この回答への補足

ご解答戴きありがとう御座います。

質問に書いてなかったのですが
postgres 7.0.2のdataディレクトリそのまま
を入れているので initdb 等必要なのか
判りません
バージョンが同じだと大丈夫だと思っている

私としては、REDHAT6.2Jを入れて
postgres 7.0.2 とPHP3.0.18に
rpm で削除/インストしてるつもりなのですが
運営されているサーバーと文字コードが違うため
AddSlashes関数を使わないと
エラーで落とされているのが現状です

補足日時:2001/04/20 20:40
    • good
    • 0

安全かどうかは知りませんが、rpmだとどうしてもコンパイル時に設定すべきオプションをカスタマイズできなくなりますから、今回のようなケースではあまりおすすめしません。


あらかじめ日本語対応済みのrpmならともかく、オリジナルのrpmだと英語環境しか想定していないことはよくありますから、その場合は自力でコンパイルする方が無難です。

自力でコンパイルすると言っても、configureしてmakeしてmake installして起動時のスクリプト書くだけですから、大した手間ではないと思うんですが。
    • good
    • 0
この回答へのお礼

大変返事が遅れましてすみません

簡単にコンパイルして出来るようでしたら
一度はためしてみたいと思います^^;

ありがとう御座いました

お礼日時:2001/04/20 20:40

私が言っているのは、initdbではなく、PostgreSQLのコンパイル時の話なんですが。


./configureはわかりますよね?

この回答への補足

そうでしたか^^;

RPMパッケージからインストールしましたので
そのへんは、わかりせん

ソースからコンパイルしたものの方が
安全なのでしょうか

補足日時:2001/04/11 19:30
    • good
    • 0

PostgreSQLのconfigure時に「--enable-multibyte=...」のオプションはつけましたか?


PostgreSQLの場合はconfigure時に選択した文字コードしか基本的に使えないので。

この回答への補足

早速の回答ありがとうございます

initdb等では、なにも指定していません


現象としては
postgresから受け取った文字列を
そのままinsert出来る環境と
できない環境が出来ているという事です
挿入できないというのは EUC-SJIS間の
文字コードに引っかかる文字で

同一ソースであっても環境の違いにより
動作に差異が発生している状態です

補足日時:2001/04/11 12:46
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!