[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 メーリングリストの案内