[PHP-users 11557] Re: ms-拡張領域の文字をphpからSQLserver(NT)へinsertしたい
Moriyoshi Koizumi
php-users@php.gr.jp
Tue, 19 Nov 2002 09:01:50 +0900
小泉です。
後で確認したところ、いくつか事実誤認がありましたので訂正します。
> > 現状のものだと第三水準の一部は大丈夫なようですが、
> > IBM / NEC 拡張領域の文字は正しく扱えないはずですので。
これは大丈夫でした。すみません。
mbstring は SJIS-WIN の指定をすれば、きちんと拡張領域の文字も
扱えます。
>
> 以下で試しましたが、古い徳の字(SJIS-win:FABA, unicode:5FB7)が
> 「@」になってしまう現象は、前メールの状況と同じでした。
> # 受取ったpostデータをそのままクライアントに表示させて確認しています。
> # IEの[表示]-[エンコード]は[自動選択-シフトjis]になっています。
> # 一緒にくる他のpostデータの漢字は正常に表示されます。
>
> ■php.ini(#2)
> mbstring.internal_encoding = Shift-JIS
> mbstring.http_input = pass
> mbstring.http_output = SJIS-win
> mbstring.detect_order = auto
> mbstring.substitute_character = pass
> mbstring.script_encoding = Shift-JIS
おそらく、
mbstring.internal_encoding = Shift_JIS を、
mbstring.internal_encoding = SJIS-win に変えてやる必要があります。
ちょっとややこしいですが、
出力フィルタで、"Shift_JIS" => "SJIS-win" に変換しようとして、
"Shift_JIS" にない文字があったので置換されてしまったのでしょう。