[PHP-users 19719]変数の受け渡しで一部文字化けするものがある。
ihara
senjyu @ f2.dion.ne.jp
2004年 1月 6日 (火) 14:34:58 JST
お世話になっております。伊原と申します。
あるサイトを自作し、テスト運営していました。
今まではほとんど問題なく、運営できていたのですが、あるプログラムで
何気なしに入力した文字が文字化けすることに気づきました。
そこで、下記のサンプルプログラムを作成し、現象を再現させたところ、
やはり文字化けが発生してしまいます。
そのプログラムは、日本語入力したものを別のプログラムへ渡して(POST,GET)いるのだけの
単純なものですが、一部の文字だけ文字化けしてしまうようです。
例)test1.php -> test2.php
文字化けする・・・天、天竜、天丼、道、
文字化けしない・・・天ぷら、天使、天国、道草
他にも次のようなパターンがあります。
test2.phpでは文字化けしないが、test1.phpに戻ると文字化けするもの
test1.php -> test2.php -> test1.php
寿 -> 寿 -> 表示されず
天ぷら -> 天ぷら -> 天ぷ
環境は、RedHat8.0+PHP4.3.0+Apache1.3.27です。
日本語環境は EUC-JP です。
マルチバイト関係は、
mbstring.encoding_translation = On
mbstring.language = Japanese
mbstring.internal_encoding = EUC-JP
mbstring.http_input = auto
mbstring.http_output = SJIS
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
mbstring.func_overload = 0
と設定されています。
どなたか解決策をご伝授願います。よろしくお願いします。
以下、サンプルプログラム
----------------------------------------------------------
test1.php
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>
</HEAD>
<BODY>
<CENTER>
<?php
print("<P>$jname</P>");
?>
<P><BR>検索したい名称を入力し、ボタンを押して下さい。</P>
<FORM ACTION="test2.php" method="POST">
<TABLE cellspacing=0 cellpadding=0 border=0 bgcolor="#ffffff" width="100%">
<TR><TD align="center">
<INPUT TYPE="text" NAME="iname" size=80 maxlength=32>
</TD></TR>
<TR><TD align="center">
<INPUT TYPE="submit" value = "検索">
<INPUT TYPE="reset" value = "取消">
</TD></TR>
</TABLE>
</FORM>
</CENTER>
</BODY>
</HTML>
test2.php
<HTML>
<HEAD>
<META http-equiv="Content-Type" content="text/html; charset=EUC-JP">
<META http-equiv="Content-Style-Type" content="text/css">
<TITLE></TITLE>
</HEAD>
<BODY>
<CENTER>
<P>検索条件 →
<?php
if( ! $iname ) {
print("? </P>");
print("<P>検索条件を入力して下さい。</P>");
}
else {
print("$iname</P>");
}
printf("<A href=\"test1.php?jname=%s\">戻る</A>",$iname);
?>
</CENTER>
</BODY>
</HTML>
PHP-users メーリングリストの案内