[PHP-users 14407]Re: スクリプトの文字コードについて
桝形 誠二
s.masugata @ digicom.dnp.co.jp
2003年 4月 1日 (火) 21:01:02 JST
こんばんわ、桝形@便乗です。
当方の環境でも変な現象に出くわしました。
どうも自動変換をしていない?
System
SunOS hogehuga 5.6 Generic_105181-23 sun4u
Configure Command
'./configure' '--with-apxs=/usr/local/apache/bin/apxs' '--without-pear' '--disable-cgi' '--disable-cli' '--enable-zend-multibyte' '--enable-mbstring=all' '--enable-mbregex' '--with-mysql=/usr/local/mysql' '--with-pgsql=/usr/local/pgsql' '--enable-ftp' '--enable-sockets' '--enable-bcmath' '--enable-wddx' '--enable-versioning'
Apache Version Apache/1.3.26
mbstring
Multibyte Support enabled
Japanese support enabled
Simplified chinese support enabled
Traditional chinese support enabled
Korean support enabled
Russian support enabled
Multibyte (japanese) regex support enabled
Directive Local Value Master Value
mbstring.detect_order auto auto
mbstring.encoding_translation On On
mbstring.func_overload 0 0
mbstring.http_input auto auto
mbstring.http_output SJIS SJIS
mbstring.internal_encoding EUC-JP EUC-JP
mbstring.language Japanese Japanese
mbstring.script_encoding SJIS SJIS
mbstring.substitute_character no value no value
test-euc1.php( EUCで記述 ):
<?
echo "あいうえおかきくけこさしすせそ";
//phpinfo( );
?>
[[ OK!! ]]
これは期待しない動作。なぜ???
test-euc2.php( EUCで記述 ):
<?
declare( encoding="EUC-JP" );
echo "あいうえおかきくけこさしすせそ";
//phpinfo( );
?>
[[ OK!! ]]
これは期待通り。
test-sjis1.php( SJISで記述 ):
<?
//@mb_internal_encoding( "SJIS" );
echo "あいうえおかきくけこさしすせそ";
//phpinfo( );
?>
[[ NG!! ]]
これは期待しない動作。
test-sjis2.php( SJISで記述 ):
<?
declare( encoding="SJIS" );
//@mb_internal_encoding( "SJIS" );
echo "あいうえおかきくけこさしすせそ";
//phpinfo( );
?>
[[ NG!! ]]
これも期待しない動作。
test-sjis1.phpと、test-sjis2.phpはコメントアウトにしている
部分を有効にすると、
mb_internal_encoding( "SJIS" )
なんとか動作しました。
という訳で、internal_encodingが効いていないからか?なのかな
と思いました。
後、軽く入力の自動変換の部分を調べてみたのですが、確かに
変な動作で期待した動作にまったくなりません。これは非常に
厳しいですねぇ。
ちなみに、同じバージョンのPHPで、
OS :RedHat Linux6.2J
Apache:1.3.27
では問題ありませんでした、phpinfoのmbstring関連の結果は同様です。
test-euc1.php( EUCで記述 ):
<?
echo "あいうえおかきくけこさしすせそ";
//phpinfo( );
?>
[[ NG!! ]]
これは期待通り。
test-euc2.php( EUCで記述 ):
<?
declare( encoding="EUC-JP" );
echo "あいうえおかきくけこさしすせそ";
//phpinfo( );
?>
[[ OK!! ]]
これも期待通り。
test-sjis1.php( SJISで記述 ):
<?
//@mb_internal_encoding( "SJIS" );
echo "あいうえおかきくけこさしすせそ";
//phpinfo( );
?>
[[ OK!! ]]
これも期待通り。
test-sjis2.php( SJISで記述 ):
<?
declare( encoding="SJIS" );
//@mb_internal_encoding( "SJIS" );
echo "あいうえおかきくけこさしすせそ";
//phpinfo( );
?>
[[ OK!! ]]
これも期待通り。
入力の自動変換の部分も特に問題なく使用できています。
_______________________
桝形 誠二( Masugata Seiji )
E-Mail : s.masugata @ digicom.dnp.co.jp
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
PHP-users メーリングリストの案内