XAMPPでMySQLが文字化ける時の対応
例のごとく(?)、phpのMySQLモジュールを使ってデータを保存した結果文字化けが発生しました。
その時やったことをメモしておきます。
php, MySQL両サイドでencodingの設定を行ないました。
動作環境
XAMPP version 1.7.1 + MySQL 5.1.33 (Community Server) + PHP 5.2.9 + PEAR (Support for PHP 4 has been discontinued)
php.iniファイルの編集
ファイルの場所
";"はコメント行なのでそれを外しつつ、値を設定します。
[mbstring] ; language for internal character representation. mbstring.language = Japanese ; internal/script encoding. ; Some encoding cannot work as internal encoding. ; (e.g. SJIS, BIG5, ISO-2022-*) mbstring.internal_encoding = UTF-8 ; http input encoding. mbstring.http_input = auto ; http output encoding. mb_output_handler must be ; registered as output buffer to function mbstring.http_output = UTF-8 ; enable automatic encoding translation according to ; mbstring.internal_encoding setting. Input chars are ; converted to internal encoding by setting this to On. ; Note: Do _not_ use automatic encoding translation for ; portable libs/applications. mbstring.encoding_translation = On ; automatic encoding detection order. ; auto means mbstring.detect_order = auto ; substitute_character used when character cannot be converted ; one from another mbstring.substitute_character = none; ; overload(replace) single byte functions by mbstring functions. ; mail(), ereg(), etc are overloaded by mb_send_mail(), mb_ereg(), ; etc. Possible values are 0,1,2,4 or combination of them. ; For example, 7 for overload everything. ; 0: No overload ; 1: Overload mail() function ; 2: Overload str*() functions ; 4: Overload ereg*() functions mbstring.func_overload = 0
my.iniファイルの編集
ファイルの場所
~/xampp/mysql/bin/my.ini
こちらもオプションと値を設定。行が無ければ追記します。
[client] default-character-set = utf8 [mysqld] skip-character-set-client-handshake default-character-set = utf8 character-set-server = utf8 collation-server = utf8_general_ci init-connect = SET NAMES utf8 [mysqldump] default-character-set = utf8 [mysql] default-character-set = utf8
これで完了
念のため、XAMPP Control PanelでApache, MySQLの再起動します。
これで文字化けせずに保存できました!