[PHP-users 6321] RedHat7.2+php4.1.2からpostgres(EUC-JP)とM$-SQLserver(SJIS)にアクセスする場合の漢字コード処理は?

Tatsuya Matsuyama php-users@php.gr.jp
Tue, 19 Mar 2002 22:53:06 +0900


松山と申します。

FAQのような気もしますが、
よく分からないのでどなたか教えて下さい。

現在、件名のような構成でphp4.1.2で
WebDBを開発しています。
クライアントはWindosのみです。

php4.1.2は--enable-mbstringでコンパイルされていて、
各種マルチバイトの処理は行える状態です。

M$-SQLserverには既存のデータベースがあり
これらの情報をFreeTDSで流用しながら、
*別途*RH7.2J+Postgresで新たなDBを追加していこうと
思っています。

テスト環境では、
以下のようなphp.ini(変更・追加部分抜粋)でapacheから起動されています。

magic_quotes_gpc = Off

magic_quotes_runtime = Off

;mbregex.encoding               =       EUC-JP
;jstring.default_encoding       =       EUC-JP

#output_handler = mb_output_handler;

[mbstring]
mbstring.detect_order   =       AUTO
mbstring.internal_encoding = EUC-JP
#mbstring.http_output = SJIS
mbstring.http_output = EUC-JP
mbstring.http_input  = Auto

phpがpostresとやり取りする場合は、
EUC-JPで統一しておけば問題はないと思いますが、
このままでは、M$-SQLserverにinsertする際に文字化け
(というよりWindos上のenterpriseMangerで漢字を確認できない状態?)が起こります。

そこで、
insertなどを施す前に
mb_convert_encoding($name, "SJIS");
でSJISに変換してからinsertしてみたのですが、
相変わらずenterpriseMangerで閲覧すると文字化けした状態です。

また、上記のpohp.iniで
mbstring.http_output = SJIS
の設定を行うとphpinfoのtitileタグが文字化けし、
phpやzendのアイコンが表示されなくなってしまい
不要な変換を行っているようにも見受けられます。

M$-SQLserverにはテーブル名やフィールド名にも漢字が使われていますが、
EUC-JPで書かれたphpから正常にアクセスできるでしょうか?

このような場合は、どのような方針をとるのが良策でしょうか。
よろしくお願いします。