[PHP-users 23653] str_replace で文字化け

MEGUMI Yoshinari gabin1 @ yahoo.co.jp
2004年 11月 17日 (水) 17:37:25 JST


以前、trimの文字化けの時にお世話になった恵です。

今回、この検証中に見つけた現象をお伺いしたく、メールいた
します。

ブラウザに表示する際に、全角スペース、半角スペースを明示
化するために、以下のようなロジックを組んでいました。
(文字コードはEUCです。)

$A = "[半角スペース][全角スペース]あいうえおか機[全角ス
ペース][全角スペース]";

echo("【元をそのまま表示】<BR>");
print $A;
echo("(改行)<P>");

echo("【スペースを明示化】<BR>");
$C = str_replace("[半角スペース]","△",str_replace("[全
角スペース]","□",$A));
 print $C;
echo("(改行)<P>");

としたところ、
そのまま表示の時は
「あいうえおか機  (改行)」
なのですが、、スペースを明示化した場合、
「△△あいうえおか帰□◆(改行)」
となりました。
本来なら、
「△△あいうえおか機□□(改行)」
とならなければならないのに...

これは、str_replaceが悪さをしているのでしょうか?
それともブラウザ?

(全角スペースが(0xA1,0xA1)、「機」が0xB5,0xA1で、表示さ
れている「帰」は0xB5,0xA2,◆は0xA1,0xA2。)

phpのバージョンは4.3.7です。



PHP-users メーリングリストの案内