文字コード

文字コードを調べる

SHOW VARIABLES LIKE 'character%';

文字コードの設定

phpMyAdmin?がインストールされている環境でGUIベースで作業する場合、

新規データベース作成の際に照合順序で"utf8_general_ci"を選択すれば自動的にCHARACTER SETには"urf8"が設定される

CREATE DATABASE sample DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE sample CHANGE sample_name sample_name VARCHAR( 100 ) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL;

Mysql4.1のEUCで設定されている環境の中にUTF-8のDBを作る

CREATE DATABASE `hogehoge` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;

文字コード設定

SET NAMES
SET CHARACTER SET

文字コードを設定してDBを作成

CREATE DATABASE zf CHARACTER SET utf8;

DB作成後に、文字コードを指定する場合

ALTER DATABASE zf default character set=utf8;

PHP+MySQL+phpMyAdmin?で文字化け

DBをUTF-8に設定。コンソールからSELCTしても、phpMyAdmin?で見ても文字化けしてないのに、PHPで取得すると文字化けする。

解決策1

以下のように、my.cnfにinit-connectを追記して解決。

[mysql]
default-character-set = utf8
[mysqld]
default-character-set = utf8
init-connect=SET NAMES utf8
[mysqldump]
default-character-set = utf8

解決策2

my.cnfの[mysqld]の項に以下のような感じで一行追加。

[mysqld]
skip-character-set-client-handshake

ちなみに「skip-character-set-client-handshake」は、 『サーバーの文字コード設定をクライアントでもそのまま使う』という意味。

mysqldumpで文字化け

DB は特に何もせずデフォルトのままで使用していて、mysqldumpを行ったら文字化けが起こりました。

文字化けの起こしたmysqldump

mysqldump -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql
mysqldump --default-character-set=utf8 -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql

確認

以下のように、文字コードがdatabase以外latin1になっていました。

ちなみに、MySQL の 4.1 は、デフォルトで使用すると、ほとんど全ての文字コードが「latin1」となります。

SHOW VARIABLES LIKE 'character%';
+--------------------------+----------------------------+
| Variable_name            | Value                      |
+--------------------------+----------------------------+
| character_set_client     | latin1                     |
| character_set_connection | latin1                     |
| character_set_database   | utf8                       |

mysqldumpがデフォルトでは、文字コードをUTF-8で出力するようになっていて「latin1」をむりやり「utf-8」に変更しようとして、文字化けを起こしているようです。

解決策

mysqldump --default-character-set=latin1 -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql
秀丸などの「latin1」に対応したテキストエディタでで開く
↓
文字コードを「latin1」に変更し、一旦保存する
↓
文字コードを「utf8」に変更して開きなおす


Comment

  • やっとまとまったReviewできるサイトにたどりついたという感じです。 感謝感謝。 -- yiyi? 2009-05-29 (金) 19:41:22


Counter: 8126, today: 17, yesterday: 0

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2009-06-13 (土) 14:08:58 (452d)