ばくのエンジニア日誌

技術的なメモなどを書いていきます。

XAMPPでMySQLが文字化ける時の対応

例のごとく(?)、phpMySQLモジュールを使ってデータを保存した結果文字化けが発生しました。
その時やったことをメモしておきます。 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ファイルの編集

ファイルの場所

~/xampp/php/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の再起動します。
これで文字化けせずに保存できました!

参考URL

XAMPP | PHP・MySQLで文字化け

XAMPPインストール&Mysql文字化け対策