はじめての開発環境作りで初っ端詰まった
PHPとMySQLを使いたいとWindows7に XAMPP ver3.2.1 とやらをインストール。
意気揚々とMySQLに書き込んでみたら、日本語が全部「???」になってしまった。
文字コードがUTF-8で統一されていないのが原因らしい。
ので、PHPの設定とMySQLの設定をひとつずつ修正することにした。
解決方法
設定が必要なファイルの場所
- XAMPPのコントロールパネルを開いて「Apache」の
Config
ボタン →<Browse> PHP
→ 開いたフォルダの中のphp.ini
- XAMPPのコントロールパネルを開いて「MySQL」の
Config
ボタン →<Browse>
→ 開いたフォルダの中のbin
フォルダ →my.ini
my.ini
は昔のXAMPPだと名前が違っていたらしく、随分と詰まった。
php.ini の設定
- 以下の8つを探して、それぞれ文頭の
;
を外す。
php.ini
;mbstring.language = Japanese
;mbstring.internal_encoding = EUC-JP
;mbstring.http_input = auto
;mbstring.http_output = SJIS
;mbstring.encoding_translation = Off
;mbstring.detect_order = auto
;mbstring.substitute_character = none
;mbstring.func_overload = 0
-
mbstring.internal_encoding = EUC-JP
をmbstring.internal_encoding = UTF-8
に直す -
mbstring.http_output = SJIS
をmbstring.http_output = UTF-8
に直す -
mbstring.encoding_translation = Off
をmbstring.encoding_translation = On
に直す - 以下みたいな感じに仕上がる。(実際はそれぞれの行間に色々入ってるけど)
php.ini
mbstring.language = Japanese
mbstring.internal_encoding = UTF-8
mbstring.http_input = auto
mbstring.http_output = UTF-8
mbstring.encoding_translation = On
mbstring.detect_order = auto
mbstring.substitute_character = none
mbstring.func_overload = 0
my.ini の設定
-
## UTF 8 Settings
を探して、その下5行の文頭の#
を外す。 -
init-connect=\'SET NAMES utf8\'
をinit-connect=SET NAMES utf8
にする。 - 以下みたいな感じに仕上がる。
my.ini
## UTF 8 Settings
init-connect=SET NAMES utf8
collation_server=utf8_unicode_ci
character_set_server=utf8
skip-character-set-client-handshake
character_sets-dir="C:/xampp/mysql/share/charsets"
-
[client]
[mysqldump]
[mysql]
を探してそれぞれdefault-character-set = utf8
を追加 - 以下みたいな感じに仕上がる。
my.ini
[client]
# password = your_password
port = 3306
socket = "C:/xampp/mysql/mysql.sock"
default-character-set = utf8
my.ini
[mysqldump]
quick
max_allowed_packet = 16M
default-character-set = utf8
my.ini
[mysql]
no-auto-rehash
# Remove the next comment character if you are not familiar with SQL
#safe-updates
default-character-set = utf8
- その後MySQLを再起動。
- 既に作ってあるテーブルには反映されないみたいなので作りなおす。
- その時のテーブルの文字コードは
utf8-general_ci
などのUTF8の物を選ぶ。
参考
ありがとうございました。