php&MySQL&Apache&Windowsの文字化け対策(UTF8で統一の場合)
環境は
でやってます。
インストールは各地にたっぷり情報が転がっているのでよいとして、
いきなり文字コードではまったのでメモ。
1.ソースそのもの
1.1.ソースコードに該当する.phpファイル自体をutf-8で作る。
(必ずしも必要ないかも)
1.2.htmlのhead、metaで文字コード指定
<meta http-equiv=content-type content="text/html; charset=UTF-8">
を指定する。
1.3.ソース上で、dbへのコネクション設定後、クエリ発行前に、セッションの文字コードを指定する。
$sql = "SET NAMES utf8"; mysql_query($sql);
・・・その後に実際のSQL発行
2.php.ini(phpのインストールディレクトリ)
default_charset = "UTF8" mbstring.internal_encoding = UTF8 mbstring.http_output = UTF8
3.my.ini(MySQLのインストールディレクトリ)
これをあとから編集したらMySQL自体を再起動すること。[mysql] default-character-set=uft8 [mysqld] default-character-set=utf8
※今回の環境は、xoopsをLinuxで立てていた環境から移行するという事情で作った環境なのだが、
skip-character-set-client-handshakeを有効にすると、
先に投入していたxoopsコンテンツが文字化けした。
もしかしたら、カスタマイズしたxoopsテンプレートの文字コードの問題だけかもしれない。
この1行なくても、それ以前の設定がちゃんとできていれば、文字化けしない。
この一文で1.3.を毎回ソースに記述する必要が無くなることになっている。
他のコンテンツに影響が無ければ使うべき。