[XAMPP] php.iniの設定 UTF-8で文字化け対策

【備忘録】テスト環境用でWindows PCに設定したXAMMPで文字化けするので、各種サイトを参考にXAMPPをUTF-8ベースに変更しました。

環境

下記の環境での設定です。OSやXAMMP等のバージョンが異なる場合は、この通りでは無い可能性があります。
OS:windows XP 32bit
XAMPP 1.8.2
Apache 2.4.4
MySQL 5.4.19
PHP 5.5.1
phpMyAdmin 4.0.4.1

実施したことは、以下の2点:phpとmysqlの環境設定です。

php.iniを修正する

  1. "C:\xampp\php\"のphp.iniを開きます。
  2. 下記の「mbstring」設定を変更します。
    • デフォルトの言語を設定
      ;mbstring.language = Japanese

      mbstring.language = Japanese
      → ";"を削除し、デフォルト言語を日本語に設定します。

      デフォルトの内部エンコーディングを設定
      ;mbstring.internal_encoding = EUC-JP

      mbstring.internal_enocoding = UTF-8
      → ";"を削除し、内部エンコーディングを"UTF-8"に設定します。
      ※注意: PHPで動作する文字エンコーディングを使用する。

      デフォルトのHTTP入力文字エンコーディングを設定
      ;mbstring.http_input = auto

      mbstring.http_input = auto
      → ";"を削除し、HTTP 入力を auto に設定します。
      "auto" は mbstring.language の設定を使って展開されます。
      ※注意: スクリプトではhttp_inputの設定は変更できません。

      デフォルトのHTTP出力文字エンコーディングを設定
      ;mbstring.http_output = SJIS

      mbstring.http_output = UTF-8
      → ";"を削除し、HTTP出力エンコーディングを"UTF-8"に指定します。

      エンコーディングフィルタを設定

      ;mbstring.encoding_translation = Off

      mbstring.encoding_translation = On
      → ";"を削除、"On"に変更し、エンコーディングフィルタを有効にします。

      デフォルトの文字エンコーディング検出順序を設定
      ;mbstring.detect_order = auto

      mbstring.detect_order = auto
      → ";"を削除し、デフォルトの順番を auto に設定します。

      代替文字のデフォルト値を設定
      ;mbstring.substitute_character = none

      mbstring.substitute_character = none
      → ";"を削除し、文字を出力しないに設定します。

      関数オーバーロードを設定
      ;mbstring.func_overload = 0

      mbstring.func_overload = 0
      → ";"を削除し、設定を有効にします。
  3. mbstring 設定オプションの詳細はphp Manualを参照して下さい。

MySQLの修正する

  1. "C:\xampp\mysql\bin\my.ini"を変更します。

  2. 下記の設定を変更します。
    • # [client]ブロックに下記の行を追加する
      character-set-server=utf8

      # [mysqld]ブロックに下記の行を追加する
      character-set-server=utf8
      skip-character-set-client-handshake

      # [mysqldump]ブロックに下記の行を追加する
      character-set-server=utf8

      # [mysql]ブロックに下記の行を追加する
      character-set-server=utf8
  3. ※MySQL 5.6の場合は[mysqld]ブロックに追加される文が"character-set-server=utf8"ではなく、"default-character-set=utf8"である点に注意

コメント