[PHP-users 11542] ms-拡張領域の文字をphpからSQLserver(NT)へinsertしたい

Tatsuya Matsuyama php-users@php.gr.jp
Mon, 18 Nov 2002 15:24:01 +0900


松山と申します。
RedHat7.3J + php-4.2.3-multibyte.tar.gzを使用しています。

本件は
[PHP-users 11071] SQL(SJIS )上の「昇」がphp(EUC) で表示できない
からのスレッドの後編になります。

Windowsのみのクライアントで使用する
Webアプリによる基幹DBを開発中です。

クライアントのブラウザ(主にIE6)から受取った
いわゆる「拡張領域」の文字(古い時の「徳」や「(株)」など)を含む
postデータからSQL文を作ってphpからFreeTDS経由でinsertしたいと思っていますが
うまくできません。
# 拡張領域を含むポストデータのみ文字化けします。
# 同時に送信された拡張領域の文字がないポストデータは
# 問題なくinsertされています。

phpとFreeTDSの問題を切り分けたいのですが、
どなたか似た環境で「拡張領域」の文字をSQLserverにinsertされている方が
どのような設定をされているのか紹介いただけないでしょうか?
# 将来的にNT認証の実装を夢見てFreeTDSを使用中ですが、
# 別のドライバでも構いません。

下記のようなphp.iniでテスト中です。
php側の問題と想定して、青マンモス本の該当個所などを参照すると
「文字コード内にメタ文字を含む為、interl_encodeingにsjisは不適」とあります。
テンプレートファイルを多用したwebアプリですが
internal_encoding       = EUC-JP
mbstring.script_encoding      = Shift-JIS
とした場合、
テンプレート用のファイルはどちらのコードで保存すべきでしょうか?

よろしくお願いします。

■php.ini抜粋
mbstring.internal_encoding    = SJIS-win
mbstring.http_input           = SJIS-win
mbstring.http_output          = SJIS-win
mbstring.detect_order         = auto
mbstring.substitute_character = pass
mbstring.script_encoding      = Shift-JIS