XAMPPの文字化け回避方法

投稿日: 作成:   更新:

こんにちは、NAGAです。

XAMPPをインストールする方法」でインストールをしましたが、
XAMPPをインストールしたあと、phpMyAdminで日本語を書き込んだら「???」と文字化けしました。

MySQLとPHPの設定を変更して文字化けを解消しましたので、これについて解説します。

それでは、行きましょう。

MySQLの文字化け解消方法

my.iniを修正

my.iniを開く

「XAMPP ControlPanel」でMySQLの「Config > my.ini」をクリックします。

メモ帳が開きます。

[client]の修正

「default-character-set」を検索して、下記の内容に修正します。

[client]
# The MySQL server
#default-character-set=utf8mb4
default-character-set=utf8

[mysqld]の修正

「character_set_server」と「skip-character-set-client-handshake」を検索して、下記の内容に修正します。

## UTF 8 Settings
#init-connect=\'SET NAMES utf8\'
#collation_server=utf8_unicode_ci
#character_set_server=utf8
#skip-character-set-client-handshake
character_set_server=utf8
skip-character-set-client-handshake

MySQLを起動

「XAMPP ControlPanel」でMySQLを「Start」します。

DBの作り直し

phpMyAdminを開く

phpMyAdminを開きます。(ApacheもStartしておきます)
MySQLのAdminボタンをクリックします。

phpMyAdminが開きます。

DBを削除する

既に作ってあるテーブルには反映されないみたいなので、データベースごと作り直します。
左側のDB「test」をクリックして、操作ボタンをクリックします。

操作タブ内にて、「データベースを削除する(DROP)」をクリックします。

「OK」ボタンをクリックします。

DBを新規作成する

「データベース」タブをクリックします。

データベース名「test」と入力して、プルダウン「utf8_general_ci」に変更して作成ボタンをクリックします。
UTF8の物を選びましょう。

このあとは、文字コードは意識せずテーブルを作れます。

文字化け解消の確認

phpMyAdminの「挿入」タブからレコードを登録します。
「山田太郎、東京都」で登録しましたが、文字化けは起きていないようです。

PHPの文字化け解消方法

XAMPPをインストールするだけでは、PHPファイルをアップした時に日本語が文字化けを起こすことがあります。
そんな時は、XAMPPの「php.ini」を設定する必要があります。

php.iniを修正

php.iniを開く

「XAMPP ControlPanel」でApacheの「Config > PHP(php.ini)」をクリックします。

メモ帳が開きます。

文字コードの設定

文字化けを起こさないように文字コードを「UTF-8」に設定します。
「default_charset」を検索して、下記の内容に修正します。

; PHP's default character set is set to UTF-8.
; http://php.net/default-charset
default_charset="UTF-8"

タイムゾーンの設定

タイムゾーンを日本に設定します。
[Date]を検索して、下記の内容に修正します。

[Date]
#date.timezone=Europe/Berlin
date.timezone = Asia/Tokyo

日本語利用のためのマルチバイト設定

日本語を使えるようにマルチバイトを設定します。
[mbstring]で検索して、下記の内容に修正します。

[mbstring]
; language for internal character representation.
; This affects mb_send_mail() and mbstring.detect_order.
; http://php.net/mbstring.language
;mbstring.language = Japanese
mbstring.language = Japanese
; Use of this INI entry is deprecated, use global internal_encoding instead.
; internal/script encoding.
; Some encoding cannot work as internal encoding. (e.g. SJIS, BIG5, ISO-2022-*)
; If empty, default_charset or internal_encoding or iconv.internal_encoding is used.
; The precedence is: default_charset < internal_encoding < iconv.internal_encoding
;mbstring.internal_encoding =
mbstring.internal_encoding = UTF-8

まとめ

いかがだったでしょうか。
今回はXAMPPインストール後のMySQL、PHPの文字化け回避方法について解説しました。

XAMPP、MySQL、PHPは海外で作られたので、日本語に対応する設定が必要となります。
パソコン環境が変わると毎回設定するので、XAMMP用の日本語パッチなどがあれば良いなと思いました。

それでは、以上です。