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

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

php.ini
i18.internal_encoding = SJIS

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

Redhat6.2J
postgres 7.0.2
php3.0.18

このQ&Aに関連する最新のQ&A

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で質問しましょう!

このQ&Aと関連する良く見られている質問

QTOP|会社概要|お問い合わせ|サイトマップ|←メニューをPHPで

どのページに行っても共通のメニューが表示させるようなPHPを求めています。

●|TOP|会社概要|お問い合わせ|サイトマップ|


CGIより行数は少ないと聞いたんですが、いちから組むのは素人では無理ですよね?
フリーでダウンロードできそうなサイトなどがありましたら、参考までに教えていただければ幸いです。

Aベストアンサー

>そのmenu.phpの中身なんです。探しているのは。

いや、だからメニューはあくまでもHTMLですから、手で書くしかありません。

Qi18n_convert と mb_convert_encoding の違い

メールの文字化け問題で色々ここも見たのですが
ズバリ
$enc = mb_detect_encoding($body);
$body = mb_convert_encoding($body,"AUTO",$enc);

$enc = mb_detect_encoding($body);
$body = i18n_convert($body,"AUTO",$enc);
の違いが分かりません。
同じ事をしていると思うのですが・・・。

あと、受信するメーラーや PCが変わると
本文が文字化けしたりしなかったりで
"AUTO"の部分をJISにしたらまず文字化けします
AUTOなら良かったり良くなかったりです

php.iniのこともよく出ていましたが
今レンタルサーバー使っています
PHP 4.3.2 を入れているようです
文字コードについてはサーバー管理者に聞かないといけないのでしょうか

パリッと文字化けしないようにしたいのですが
何かいい方法はないでしょうか?

Aベストアンサー

いろいろと試されても文字化けするということですよね.
PHPの設定を確認してみてはいかがでしょう??

マルチバイト文字列関数にはphpのinternal_encoding等のmbstringの設定を行わないと正常に動作しない場合があります.
設定されているかどうかは,phpinfoでご確認ください.

以下,mbstring.internal_encodingをSJISとして設定する場合の例です.
(1)か(2)の何れかの方法で設定してみてください.
当然のことながら,レンタルサーバなら(2)しかできないですね.

(1)php.iniにて設定
以下を記述してください.
設定を有効にするためにはapacheの再起動が必要です.
この方法は,該当サーバのphpスクリプト全てに対して有効になります.

mbstring.language = Japanese
mbstring.internal_encoding = SJIS
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none;

(2)PHPファイルのあるディレクトリに.htaccessを設置
以下を記述してください.
こちらは.htaccessを設置したディレクトリ配下にて有効となります.

php_value output_handler mb_output_handler
php_value default_charset Shift_JIS
php_value mbstring.language Japanese
php_flag mbstring.encoding_translation Off
php_value mbstring.http_input auto
php_value mbstring.http_output SJIS
php_value mbstring.internal_encoding SJIS
php_value mbstring.substitute_character none

既にご存知でしたら,申し訳ないです….

参考URL:http://www.shigeweb.jp/php/project_p/?section=setup&page=htaccess

いろいろと試されても文字化けするということですよね.
PHPの設定を確認してみてはいかがでしょう??

マルチバイト文字列関数にはphpのinternal_encoding等のmbstringの設定を行わないと正常に動作しない場合があります.
設定されているかどうかは,phpinfoでご確認ください.

以下,mbstring.internal_encodingをSJISとして設定する場合の例です.
(1)か(2)の何れかの方法で設定してみてください.
当然のことながら,レンタルサーバなら(2)しかできないですね.

(1)php.iniにて設定...続きを読む

QhtmlはSJIS PHPはEUC mb_convert関数を使っても文字化けします

htmlは、Shift-JISで作っています。
PHPは、EUCで作っています。
PHPのPOSTで、文字の部分は、
mb_convert_encoding($_POST[abc],"EUC","SJIS")です。
この関数であれば、文字化けしないはずなのですが・・・
フォームに「あいうえお」と入力すると、、「、、、ヲ、ィ、ェ  と入力されてしまいます。
PHP.iniを確認したのですが、mb_convert関数は有効になっています。
因みに、会社の上司もxamppを持っており、htmlとPHPファイルだけコピーさせてもらって、確認したのですが、同じ現象が起こります。
会社のPCと、インストールした物も設定もしたものも同じ。
文字に関わるPHP.iniやmy.confなどを、一応上書きさせてもらったのですが、変わりません。
会社のPCと、全く同じ設定なのに、何故、私のファイルだけ‥‥mb_convert関数が使えないのか?
私のhtmlかPHPに、何かがあるのでしょうか?
htmlはMETAタグでSJISにしています。
原因不明で、どうしたらいいのかパニックしています。

htmlは、Shift-JISで作っています。
PHPは、EUCで作っています。
PHPのPOSTで、文字の部分は、
mb_convert_encoding($_POST[abc],"EUC","SJIS")です。
この関数であれば、文字化けしないはずなのですが・・・
フォームに「あいうえお」と入力すると、、「、、、ヲ、ィ、ェ  と入力されてしまいます。
PHP.iniを確認したのですが、mb_convert関数は有効になっています。
因みに、会社の上司もxamppを持っており、htmlとPHPファイルだけコピーさせてもらって、確認したのですが、同じ現象が起こります。
会...続きを読む

Aベストアンサー

文字コードがShiftJISの文字コードで記述されたHTMLのフォームからPOSTされてきた文字のコードは当然ShiftJISで、
ソレをEUC-JPで記述されているPHPで処理したいのでShiftJISの文字をEUC-JPに変換したんですよね。
mb_convert_encoding($_POST[abc],"EUC","SJIS");
この関数は、第一引数に与えられた文字列を、第三引数の文字コードから第二引数の文字コードに変換するという意味です。

であれば、その文字コードをHTMLに再度表示したいのであれば、EUC-JP⇒ShiftJISに変換しなければなりませんよね。
mb_convert_encoding($_POST[abc], "SJIS", "EUC");

HTMLのmetaタグでのcharsetの指定に関しては、ブラウザに「このHTMLは~という文字コードで記述されています」というのを宣言、通知するだけであって、文字コードの変換を行うわけではありません。

Qmb_convert_encodingのタイミング

検索フォームがあるphpファイルはShift_JISですが、検索を問い合わせるデータベースがEUC-JPになっています。

<form action="search.php" method="post">
<input type="text" name="keyword" size=30>
<input type="submit" value="検索">
</form>

検索フォームで入力されたキーワードをmb_convert_encodingでShift_JISに変換してからpostしたいのですが、search.phpで検索キーワードを受け取る前にエンコード変換することは無理なのでしょうか?

Aベストアンサー

>Shift_JISに変換してからpost

おっしゃる意味がよくわからないのですが、
HTML側で先にコンバートする・・・ということですか?

もしそうであればPHPが動いているのはサーバー側なので
データが送られてこないことには話になりません。
ですのでご希望の命題を達成することはできません。

受け取った側で変換すればすむのでは?

Qmb_convert_encodingについて

Fatal error: Call to undefined function: mb_convert_encoding() in c:\apache\htdocs\test\03-03\common.php on line 27

上記のエラーがでます。
mb_convert_encoding[文字エンコーディングを変換する]
を利用するにはphp.iniで設定の変更などありますか?

Aベストアンサー

PHPをコンパイルするときにマルチバイト文字列関数関係のオプションを有効にされましたでしょうか?
これを有効にしないとマルチバイト文字列関数が使えません。

参考URL:http://www.php.net/manual/ja/ref.mbstring.php


このカテゴリの人気Q&Aランキング

おすすめ情報