[PHP-users 30486] Re: 特定の出力ページのみShift_JISにしたい

Masuda macindows @ forest.ocn.ne.jp
2006年 10月 10日 (火) 00:18:08 JST


前佛様、有難うございます。

Zembutsu Masahito wrote:
> 
>> しかしプログラム自体の文字コードをSJISにしたり、
>> プログラムの文字コードをUTF-8にしたまま
>> $strs = mb_convert_encoding($strs, "SJIS", "UTF-8");といったことをしてしまうと
>> 文字化けしてしまいます。
> 
>  特定のディレクトリのみ対応させたいのでしたら、.htaccess に記述
> の追加、php_flag や php_value を使って php.ini より設定を優先さ
> せてしまう方法は邪道でしょうか。
> 
仰るとおりで、その対応ディレクトリの.htaccessにShift_JIS用のphp.iniの設定を書くことで解決しました。
具体的には、
<IfModule mod_php5.c>
    # for charset
    php_value default_charset "SJIS"
    php_value mbstring.http_input "auto"
    php_value mbstring.http_output "SJIS"
    php_value mbstring.language "Japanese"
    php_value mbstring.internal_encoding "SJIS"
    php_flag  mbstring.encoding_translation Off
</IfModule>

といった形でSJIS対応にしました。ただこれだとUTF-8で作成されたフォームからPOSTされると
受け取った値が化けてしまいますので、
$day = mb_convert_encoding($_POST["day"], "SJIS", "UTF-8");
という風にPOSTからの受け取った値もSJISにすることで無事解決しました。

ただなぜだかfirefoxが、if文で処理されていないほうのメッセージを保存してしまうという意味不明な
問題が新たに出てきてしまいましたが。。。
表示されているのはCSVですし、ソースもCSVになっているので、バグのような気もします。

>  wiki は(種類にもよると思いますが)独自に文字コードに関しては
> 内部処理させているのだと思います。
> 
そうみたいですね。うまく解読できなかったので、.htaccessのほうを採用させていただきました。

西村様、前佛様、ご助言有難うございました。
無事解決でき助かりました。この度は有難うございました。


増田
-- 
Masuda.
mailto:macindows @ forest.ocn.ne.jp



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