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

Tatsuya Matsuyama php-users@php.gr.jp
Tue, 19 Nov 2002 14:36:51 +0900


松山です。
レスありがとうございます。

希望の動作を実現できました。

----- Original Message ----- 
From: "Masaki Fujimoto" <fujimoto@studio.co.jp>
Sent: Tuesday, November 19, 2002 10:18 AM
Subject: [PHP-users 11559] Re: ms-拡張領域の文字を phpからSQLserver(NT) へinsertしたい

> --enable-mbstr-enc-transをoffにして、
> 
> mbstring.internal_encoding    = SJIS-win
> mbstring.http_input           = pass
> mbstring.http_output          = pass
> mbstring.detect_order         = auto
> mbstring.substitute_character = pass
> mbstring.script_encoding      = Shift-JIS
> 
> とすればPHP側としては問題なくなるかと思います(注:試してません)。http_i
> nputのエンコーディング変換はmb_convert_variables()等を用いて手動で行う必
> 要がありますが。

make distclean後再度、
以下のようにphp-4.2.3-multibyte.tar.gzを--enable-mbstr-enc-transをoffでmakeしてみました。

./configure
--with-apxs=/usr/sbin/apxs
--with-pam_auth
--enable-zend-multibyte
--enable-mbstring
--with-sybase=/usr/local/freetds
--without-mysql
--enable-mbregex

そして、最終的に下記のようなphp.iniとしたところ、
希望の動作を実現できました。

mbstring.http_output = pass とすると、
(私の環境では)クライアントで表示された時、全てが文字化けしています。

[自動検出]-[シフトJIS]にチェックは入っていますが、化けます。
手で[日本語(自動選択)]にすると正常に表示されます。
php側でheader()関数で指定すべきなのかもしれませんが、
(テスト用に)表示させているページには全てテンプレート用htmlファイルがあり、
それらにはheadタグが書かれているので不要かとは思います。
私には、原因はよく分かりません。

どうもありがとうございまいした。

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