88
88

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

XAMPPの文字化け回避メモ

Last updated at Posted at 2015-01-20

はじめての開発環境作りで初っ端詰まった

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-JPmbstring.internal_encoding = UTF-8 に直す
  • mbstring.http_output = SJISmbstring.http_output = UTF-8 に直す
  • mbstring.encoding_translation = Offmbstring.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の物を選ぶ。

参考

ありがとうございました。

88
88
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
88
88

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?