*文字コード [#bed044bb]
**文字コードを調べる [#m33576b2]
 SHOW VARIABLES LIKE 'character%';

**文字コードの設定 [#c7f379c4]
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を作る [#dc39276e]
 CREATE DATABASE `hogehoge` DEFAULT CHARACTER SET utf8 DEFAULT COLLATE utf8_general_ci;


**文字コード設定 [#be96411f]
 SET NAMES
 SET CHARACTER SET

**文字コードを設定してDBを作成 [#i6e7f7be]
 CREATE DATABASE zf CHARACTER SET utf8;

**DB作成後に、文字コードを指定する場合 [#z13963bf]
 ALTER DATABASE zf default character set=utf8;

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

***解決策1 [#wc7f3dcd]
以下のように、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 [#n4e9f885]
my.cnfの[mysqld]の項に以下のような感じで一行追加。

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

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

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

***文字化けの起こしたmysqldump [#v94755fb]
 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

***確認 [#pf283a96]
以下のように、文字コードが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」に変更しようとして、文字化けを起こしているようです。


***解決策 [#od7450ec]
 mysqldump --default-character-set=latin1 -u root -h 000.000.00.00 DB名 -p > dump200709051512.sql

 秀丸などの「latin1」に対応したテキストエディタでで開く
 ↓
 文字コードを「latin1」に変更し、一旦保存する
 ↓
 文字コードを「utf8」に変更して開きなおす

&br;
*Comment [#v685ab56]
- やっとまとまったReviewできるサイトにたどりついたという感じです。 感謝感謝。 -- [[yiyi]] &new{2009-05-29 (金) 19:41:22};
- statusで見ると「Db characterset:latin1」となっており、文字が?となってしまいます。 -- [[inoue]] &new{2011-05-17 (火) 14:24:16};
- test -- [[test]] &new{2011-06-30 (木) 22:55:07};
- test -- [[test]] &new{2011-06-30 (木) 22:56:36};
- たすかりました。 -- [[blog.gjm.click]] &new{2015-11-30 (月) 11:44:25};
- I like what you guys are up too. Such smart work and reporting! Carry on the excellent works guys Ive incorporated you guys to my blogroll. I think it'll improve the value of my website  ggebbeeccbdd -- [[Johnc279]] &new{2016-08-25 (木) 13:16:46};
- Very nice site! -- [[Pharmd928]] &new{2016-08-26 (金) 06:46:44};
- Very nice site! -- [[Pharme673]] &new{2016-08-27 (土) 12:56:54};
- Very nice site! -- [[Pharmd197]] &new{2016-08-28 (日) 19:01:38};
- Very nice site! -- [[Pharmd111]] &new{2016-08-30 (火) 02:01:41};
- Very nice site! -- [[Pharme735]] &new{2016-08-31 (水) 08:13:11};
- Very nice site! -- [[Pharmd836]] &new{2016-09-01 (木) 14:30:12};
- Very nice site! -- [[Pharmg4]] &new{2016-09-02 (金) 20:43:16};

#comment_nospam
&br;
#counter

IP:193.106.62.48 TIME:"2016-09-02 (金) 20:43:16" REFERER:"http://wiki.minaco.net/index.php?MySQL%2F%E6%96%87%E5%AD%97%E3%82%B3%E3%83%BC%E3%83%89" USER_AGENT:"Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)"

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS