PHPの文字化け対処

現在、zumaはレンタルサーバをcoreserverに乗換しようと思っています。

現在はさくらインターネットのスタンダードプランなのですが、

  • 年間どちらも5,000円
  • さくらインターネットは1GB、coreserverは15GB
  • coreserverはブログ(MT)に必要なMySQLがいっぱい作れるし、サブドメインもたくさん使える(確か無制限)

ということで、同じ値段ならいろいろ使えそうなcoreserverがいいと思い、現在お試し期間中(15日間)なのです。

で、私はオンラインショップ「珠しづく」をPHPで運営しています。

そのオンラインショップをcoreserverのほうに移してみたら・・・

文字化け状態
このように文字化けが!(今までよく化けなかったもんだ)

どうしたもんかとネットで調べてみたところ、文字化けが起きているphpファイルがあるフォルダに「.htaccess」ファイルを入れてやればよい、ということが判明。以下、覚え書きです。

しかし、phpって何ぞや状態のzuma。まーた時間がかかりました、解決までに。だって.htaccessファイルに何を書いたらいいか分からんのと、どうやって書いたらいいのかが分からんのよ。

最初、ただ単に、.htaccessファイルに
php_flag mbstring.http_input=EUC-JP
php_flag mbstring.http_output=EUC-JP
php_flag mbstring.internal_encoding=EUC-JP
って書いてただけだもの(笑)。これじゃあ絶対直りませんて。(phpをわかっている人が見たら失笑するであろう)

えーと、手順として

  1. phpinfo()で、coreserverのサーバ中身を見る
  2. 文字化け原因を探す(mbstringのところ)
  3. 文字化け原因を解消するコード?を書いた.htaccessファイルを作って、該当フォルダにアップロードする

ということをやりました。

まず、
1.phpinfo()ファイルを作る

<?php
phpinfo();
?>

  • テキストエディタにこれだけ書いて、「phpinfo.php」というファイル名をつけて保存し、適当なフォルダ(いま、問題が起きているファイルがあるフォルダでよい)にアップロードする。
  • そのフォルダをブラウザで見る
    するとこんな風に表示されます
    phpinfo

2.文字化け原因を探す
coreserverは、phpが吐き出すソース(っていうのか?)の文字コードをutf-8にしているため、それが原因で化けていたようです。ちなみに「珠しづく」でお借りしているショッピングカートはEUC-JPで出来ています。

3..htaccessファイルを作る

  • テキストエディタに以下のように書く

    <ifmodule mod_php5.c>
    #お使いのphpのバージョンが4なら、5→4に変える

    php_value include_path “.:/***/***/*****/php”
    #include_pathを書く phpinfo.phpに書いてあります

    php_value mbstring.internal_encoding “EUC-JP”
    #文字化け原因のutf-8だったところをEUC-JPに直す

    php_value mbstring.http_output “EUC-JP”
    #文字化け原因のutf-8だったところをEUC-JPに直す

    </ifmodule>

  • 書いたら、zzz.htaccessとでも名前をつけて保存する
  • zzz.htaccessを該当フォルダへアップロードし、「.htaccess」(zzzを削除する)にリネームする
    アップロードするときはアスキーモード(デフォルトではバイナリモードになっていることが多い)でアップロードすること。

結果、文字化けが直りました!

文字化け解消!


しかし、モトから化けてないところもあるので、良く分からんなぁと思ったデキゴトでした。

参考になったサイト:

カテゴリ:ぶろぐはMovableType

コメント欄を閉じました

一定期間経過後の投稿へのコメントはできません。