[PHP-users 11071] SQL(SJIS)上の「昇」がphp(EUC)で表示できない
Tatsuya Matsuyama
php-users@php.gr.jp
Thu, 24 Oct 2002 17:39:16 +0900
松山と申します。
Red-Hat7.3J+php-4.2.1を使用しています。
同じホスト上でapacheも稼働しており、
イントラ内のSQLseverを参照するwebアプリを作成しています。
漢字コードについての質問です。
php内はEUC-JP
NT+SQLserverはSJISです。
phpでは、
eucで保存された漢字交じりのテンプレートファイルに
sqlから抽出したsjisをeucに変換して表示しています。
この方法でSQLから引っ張ってきた一部の漢字が表示ができない
(判明しているのは「○○ (<-全角スペース)昇」の「昇」)
症状があり困っています。
データベースから取り出した直後のmb_convert_encoding前の
$data->first_name_jに入っている時点でもうアウトのようです。
わりと一般的な漢字かと思うのですが、
何か回避方法などございましたら、ご紹介ください。
よろしくお願いします。
以下、mb関連のphp.iniと
簡単なソースです。
■php.ini(抜粋)
[mbstring]
mbstring.detect_order = AUTO
mbstring.internal_encoding = EUC-JP
mbstring.http_output = SJIS
mbstring.http_input = auto
mbstring.substitute_character = none
■EUCで保存されているテンプレートにデータを入れるphp
(このphpファイル自体もEUCです。)
$tmpl->loopset("jyugyouin");
for ($i=0; $i<$resultNumRows; $i++)
{
$data = sybase_fetch_object($result);
$jyugyouin_id = $data->jyugyouin_id;
$delete_flag = $data->delete_flag;
$nyusha_day = $data->nyusha_day;
$taisha_day = $data->taisha_day;
$last_name = mb_convert_encoding($data->last_name_j, "EUC-JP", "auto");
$first_name = mb_convert_encoding($data->first_name_j, "EUC-JP", "auto");
$shozoku = mb_convert_encoding($data->shozoku_name, "EUC-JP", "auto");
$group_name = mb_convert_encoding($data->group_name, "EUC-JP", "auto");
$name = $last_name . " " . $first_name;
$tmpl->assign("name", $name);
$tmpl->assign("jyugyouin_id", $jyugyouin_id);
$tmpl->assign("login_user_name", $data->login_user_name);
$tmpl->assign("jyugyouin_selected", $selected);
$tmpl->assign("delete_checked", $delete_checked);
$tmpl->assign("sekininsha_checked", $sekininsha_checked);
$tmpl->assign("shozoku", $shozoku);
$tmpl->assign("group_name", $group_name);
$tmpl->assign("shima", $color);
$tmpl->assign("nyusha_day", $nyusha_day);
$tmpl->assign("taisha_day", $taisha_day);
$tmpl->loopnext();
}