PHP文字コードについて再び悩む・・・

July 17, 2008,
tags: php 文字コード


このエントリーをはてなブックマークに追加

うーん思ったような動作をみせてくれないので困り果てています。
ケータイサイトの作成に、PHPのスクリプト自体はEUC-JPで処理して、表示する際にob_startをつかってSJISとして表示しているのですが…
なんか動作が微妙になってきた。。。

予想外の動きが。。。
片方のスクリプトではGETをforeachしたときにvar_dumpするとSJIS文字として表示させるのですが、もう片方はEUC-JP文字として表示されます。。

.htaccessの内容が

php_value mbstring.language "Japanese"php_value mbstring.internal_encoding "EUC-JP"php_flag  mbstring.encoding_translation On

php_value mbstring.http_output "SJIS"

php_value mbstring.http_input "SJIS"

php_value mbstring.script_encoding "EUC-JP"

#php_value mbstring.detect_order  "EUC-JP,SJIS,JIS,UTF-8,ASCII"```

となっています。

a.phpというページのフォームからGETのwordパラメータとして違うスクリプト(b.php)に送っています。  
b.phpでは値を受け取ってからGETをforeachして、urlencodeをかけて、htmlの中にaタグにwordパラメータとしてc.phpに送ります。  
c.phpではb.phpに戻るためにGETのwordパラメータをaタグに入れます。この前に、urlencodeをかけます。  
で、b.phpのGETのwordパラメータを表示した場合と、c.phpでGETのwordパラメータを表示(var_dump)した場合に、b.phpではSJISとしてc.phpはEUC-JPとして  
表示されてしまいます。。。

a.php

```

b.php

<?php
    foreach($_GET as $key => $value){
        var_dump($value);//テストで表示させています。
        $url .= "&$key=".urlencode($value);
    }
?>
<a href="<php? echo $url ?>">リンク</a>```

c.php

<?php foreach($_GET as $key => $value){ var_dump($value); $back_url .= “&$key=“.urlencode($value); } ?>

Ryota Mochizuki PHPer, Web Developer
comments powered by Disqus