- 2007年8月23日 18:58
- PHP
こんな基本的なことはどうでもいいのですが、とりあえずMySQLがEUC-JPならPHPのエンコードもEUC-JPにすりゃええんだば。
自宅サーバなら設定でSJISなりなんなりできるんかなと思いますが、というか文字化けするからやっぱりEUC-JPがええんだばど。タイトル長い。
xamppは知っているでしょうか?MySQLやApacheやphpやその他いろいろのものが一括でインストールでき、かつ管理もできるというものです。
似たようなものを前にもみかけましたが、僕はこれを使っています。phpの環境を用意するのは面倒だからと思われてきましたけど、これがあるんならそう面倒なこともないでしょう。
これのApacheのphpのブラウザ出力によるエンコードがデフォルトでSJISになっています。
たとえばSJISで保存されたphpのファイルをそのApacheでブラウザ表示させると普通に表示されるのですが、もしEUC-JPで保存されたphpのファイルをブラウザ表示させると文字化けします。
テキストの保存形式にもいろいろあるのですが、それが違うと文字化けしてしまうんですね。だからこれは当然の現象です。
SJISのままでphpを学習する分には特に問題ありません。別にウェブ上で公開するわけでもありませんし。
がしかし、MySQLと連携してphpを本格的にやっていこうと思うのならEUC-JPでやってく方がいいと思うのです。
レンタルサーバのMySQLはだいたいEUC-JPみたいですし。そうするとphpMyAdminで文字化けすることもなく閲覧できるから、その方が都合もいいことでしょう。
というわけでxamppのApacheでphpコードを出力する際に、SJISではなくEUC-JPにする方法を。別にやる必要もない設定なのですけど(汗
単にローカルでコード書いたりデバック等やるときはSJISでやって、ウェブで公開する際にEUC-JPにすればいいだけの話なのです。
でもSJISのままだとpostとかgetで渡す文字が文字化けしたりもするらしいので、そこを考えてEUC-JPにするといいですよ。
xamppでphpの出力をEUC-JPにすんべ
xamppは入っているサーバがapacheなので、apacheにおけるphpのブラウザ出力をSJISからEUC-JPにしてしまうということです。
それを可能にするにはphp.iniというファイルを編集しなければいけません。というわけでphp.iniを編集する作業をしましょう。
あとEUC-JPに関係なくやっといた方が良い設定も書いときます。
まず、
C:\xampp\apache\bin
の中にあるphp.iniをメモ帳で開いてください。玄人な人はサクラエディタなりxyzzyなりで開いてください。
115行目を↓のように書き換えます。
;output_handler =
↓
output_handler =mb_output_handler
文字の先頭にある「;」は削除するのを忘れないように。
433行目の書き換え
;default_charset = "iso-8859-1"
↓
default_charset = "EUC-JP"
charsetをEUC-JPにする設定っす。
1172行目の書き換え
;mbstring.language = Japanese
↓
mbstring.language = Japanese
「;」を削除するだけですね。言語を日本語にする設定。
1177行目の書き換え
;mbstring.internal_encoding = EUC-JP
↓
mbstring.internal_encoding = EUC-JP
「;」を削除するだけ。エンコーディングをEUC-JPにする作業。
1180行目の書き換え
;mbstring.http_input = auto
↓
mbstring.http_input = auto
そういうです。これはhttpの入力をautoにするもの。
1184行目の書き換え
;mbstring.http_output =SJIS
↓
mbstring.http_output =EUC-JP
「;」とってEUC-JPにしました。http出力をEUC-JPにするのです。
1191行目の書き換え
;mbstring.encoding_translation = Off
↓
mbstring.encoding_translation = On
「;」これとってOnにします。http入力の変換を有効にするもの。しなくてもいいかもしれませんが念のため。
1195行目の書き換え
;mbstring.detect_order = auto
↓
mbstring.detect_order = auto
とりのぞくだけです。
1199行目の書き換え
;mbstring.substitute_character = none;
↓
mbstring.substitute_character = none;
同じく取り除くだけ。
たぶん大丈夫だとは思いますが、念のため次の行を確認してください。
618行目
extension=php_mbstring.dll
これにもし「;」が先頭についていたのなら削除してください。ついていないとは思いますが。
以上でphp.iniの編集は終了です。ただし、これだけだとphpを4,5を切り替える際に戻ってしまうそうなので、
C:\xampp\php
と
C:\xampp\php\php4
にあるphp.iniの設定も同じように変更してください。これらは上記の行目とは場所が若干違うので、その行目になかった場合は近くを探してください。
これでEUC-JPにもなったしいろいろ設定ができました^^
僕の場合はphp4.iniとphp5.iniも同じように編集してしまったんですけど、これはしなくてもいいかな(汗
影響がなかったような気がしますし。もしphpのバージョンを切り替えたときにもとに戻るようだったら、それらのファイルも同じように編集してみたら確実だと思います。
じゃあEUC-JPで保存したphpファイルをローカルで表示させてみてください。たぶん文字化けしないはずです。
もし文字化けするようでしたら僕を頼るとさらにひどくなることをお約束しますヽ(゚◇゚ )ノ
- Newer: 司馬遼太郎『坂の上の雲3』
- Older: 司馬遼太郎『坂の上の雲2』