[PHP-users 11442] 国際化版PHPでのSJIS処理
net0
php-users@php.gr.jp
Tue, 12 Nov 2002 15:17:00 +0900
播田と申します。
よく出る問題なのですが、いまいち良い方法が浮かばないので、、
VineLinux2.5で
藤本さんの
国際化版PHP
php-4.2.3-multibyte.tar.gz
を利用させて頂いております。
この国際化版で、IE&携帯対応のSJISでの処理を行いたいのですが、
方法を調べてみたところ
●「何もかもSJIS」
mbstring.internal_encoding = Shift_JIS
mbstring.http_input = auto
mbstring.http_output = pass
mbstring.detect_order = auto
mbstring.substitute_character = auto
mbstring.script_encoding = Shift_JIS
かつ、Postgresの接続時に
$link=pg_pconnect(...);
pg_exec($link,"SET CLIENT_ENCODING TO 'SJIS';");
を行っています。
この状態での問題点として
\を含む日本語もクォートされてしまい、Postgres等のSQL文で
パースエラーになります。(magic_quotes_gpc=on)
変数を扱う前に日本語部分の\を除去すればいいとおもうのですが
日本語部分の\を除去するのが複雑で挫折しました。
●「スクリプトと出力はShift_JISだけど、データベースはEUC-JP」
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = Shift_JIS
mbstring.detect_order = auto
mbstring.substitute_character = auto
mbstring.script_encoding = Shift_JIS
この時
<form enctype="multipart/form-data"
の場合、ファイル添付等以外の項目は
手動でSJISに変換してやる必要がある?
以前のVerで試した記憶だったんで、再度
4.2.3でmagic_quotes_gpc=on/offとあわせて
試してみたんですが、値がおかしい?
'ソ'=83 5c が
'ソ'=00 5c
で表示されてました。
※OS環境のせいかも。。。
SJIS出力でこれといった運用方法がありましたら、工夫を教えていただけると
助かります。
---
関係ないですが
http://snaps.php.net/
の
php4-STABLE-200211101739.tar.gz
あたりを試したら
ext/mysql/libmysql/my_tempnam.c:103: the use of `tempnam' is dangerous, better use `mkstemp'
と出ますが、無視しておけば、そのうち修正はいるのかな?
--
net0@nifty.com