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

Masaki Fujimoto php-users@php.gr.jp
Tue, 19 Nov 2002 10:18:37 +0900


ふじもとです。

> mbstring.internal_encoding = Shift_JIS を、
> mbstring.internal_encoding = SJIS-win に変えてやる必要があります。
> 
> ちょっとややこしいですが、
> 出力フィルタで、"Shift_JIS" => "SJIS-win" に変換しようとして、
> "Shift_JIS" にない文字があったので置換されてしまったのでしょう。

だと思います。加えてscript_encodingにもSJIS-winを指定したほうが良いはず
なのです、が、現在script_encodingにSJIS-win指定することができません。何
故かと言うと、僕がさぼっていたからです。すみません。

ので、とりあえずの回避策としては:

--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()等を用いて手動で行う必
要がありますが。

script_encodingはShift-JISとなっていますが、スクリプトに外字を記述しても
問題ない実装になっているとおもいます。

--
藤本 真樹

fujimoto@studio.co.jp
fujimoto@php.net