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

Twitter ツイート Hatena Bookmark ブックマーク

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

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

.htaccessの内容が

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
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

```html
<input type="text" name="word" >

b.php

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

c.php

1
2
3
4
5
6
7
8
<?php
    foreach($_GET as $key => $value){
        var_dump($value);
        $back_url .= "&$key=".urlencode($value);
    }
?>

<a href="<php? echo $back_ur ?>l">戻る</a>

原因がさっぱりわからん。。。
また明日考えて見ます。。。

comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。