[PHP-users 11512] Re: SQL(SJIS)上の「昇」がphp(EUC)で表示できない

Tatsuya Matsuyama php-users@php.gr.jp
Fri, 15 Nov 2002 12:01:51 +0900


松山です。

----- Original Message ----- 
From: "Tatsuya Matsuyama" <tatsuya@kk-okamoto.jp>
Sent: Wednesday, October 30, 2002 9:13 AM
Subject: [PHP-users 11168] Re: SQL(SJIS )上の「昇」がphp(EUC) で表示できない


> 
> ありがとうございます。最終的に
> 一度、SJISに統一してテストしてみたいと思っています。

SQLserver7.0(NT4.0SP6a) <--> RedHat7.3J + php-4.2.3-multibyte.tar.gz
でphp.iniを下記のように設定して
SJIS統一環境をテストしています。
# クライアントは全てwindowsを想定しています。

phpファイルを含む全てのWebコンテンツをSJISとし
mb_convert_encoding等を通さなければ
「昇」(sjis-code:8fb8)が表示されることを確認しました。

# php-4.2.1でも同じ設定なら表示されると思います。(未確認)
# また、逆に、この設定でSQLserverから(sjis-winで)きたデータを
# mb_convert_encoding($data->first_name_j, "SJIS", "auto")
# や
# mb_convert_encoding($data->first_name_j, "SJIS-win", "auto")
# としてしまうと、結果が無くなる(=""となり表示できない)ことも確認しました。

以上から
SQLserver->phpに関しては、素通し(?)して表示する方法で対応は可能と思っています。

質問は、
php->SQLserverへデータを格納する方法です。

hidden等も兼用して
phpが受取った段階でsjisを想定し
かつ
mbstring.http_output   = Shift_JISに期待してpostで受取ったデータを
何もしない(mb_convert_encodingを使わない)でinsertしようと思っていますが、
このような方法で注意すべきことなどはあるでしょうか?
# 最終目標は、クライアントから
# (株)や古い漢字なども正常に処理できる機構です。

また、php.iniは
SJIS-winとする方がベーターでしょうか?

よろしくお願いします。


■php.ini抜粋
magic_quotes_gpc = Off

mbstring.internal_encoding    = Shift_JIS
mbstring.http_input           = auto
mbstring.http_output          = Shift_JIS
mbstring.detect_order         = auto
mbstring.substitute_character = pass
mbstring.script_encoding      = Shift_JIS