なからなLife

geekに憧れと敬意を抱きながら、SE、ITコンサル、商品企画、事業企画、管理会計、総務・情シス、再び受託でDB屋さんと流浪する人のブログです。

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

※今回の環境は、xoopsLinuxで立てていた環境から移行するという事情で作った環境なのだが、
skip-character-set-client-handshakeを有効にすると、
先に投入していたxoopsコンテンツが文字化けした。
もしかしたら、カスタマイズしたxoopsテンプレートの文字コードの問題だけかもしれない。


この1行なくても、それ以前の設定がちゃんとできていれば、文字化けしない。
この一文で1.3.を毎回ソースに記述する必要が無くなることになっている。
他のコンテンツに影響が無ければ使うべき。