ç产ç¯å¢ä¸ï¼ç»å¸¸ä¼ç¢°å°Mysqlå符ç设置é®é¢ã
以䏿¯ä¸ªäººçä¸äºæ»ç»ï¼å¸æå¯¹å¤§å®¶ææå¸®å©ã
妿å¨åºç¨å¼å§é¶æ®µæ²¡ææ£ç¡®ç设置å符éï¼å¨è¿è¡ä¸æ®µæ¶é´ä»¥åæåç°åå¨ä¸è½æ»¡è¶³è¦æ±éè¦è°æ´ï¼é£ä¹å°±éè¦è¿è¡å符éçä¿®æ¹ãå符éçä¿®æ¹ä¸è½ç´æ¥éè¿alter dataabase character set ***; æè ãalter table tablename character set ***; å½ä»¤è¿è¡ï¼è¿ä¸¤ä¸ªå½ä»¤é½æ²¡ææ´æ°å·²æè®°å½çå符éï¼èåªæ¯å¯¹æ°å建ç表æè è®°å½çæã
å¨ç¬è çæ°æ®åºæä¸ºå¸¸ç¨çæ¯latin1ãutf8ï¼ç±äºé¡¹ç®çæ´åï¼å符çè¦æ±ä¹å¼å§è§èï¼ç»ä¸ä¸ºutf8ï¼é£ä¹å°±éè¦æä¹åçlatin1åç¬¦è½¬æ¢ææutf8æ ¼å¼ï¼é£æ ·æä¸ä¼åºç°ä¹±ç çæ åµãå·²æçè®°å½çå符éè°æ´ï¼éè¦å å°æ°æ®å¯¼åºï¼ç»è¿éå½çè°æ´éæ°å¯¼å ¥åæå¯å®æã
以䏿¨¡æçæ¯å°latin1å符éçæ°æ®åºä¿®æ¹æGBKå符éçæ°æ®åºçè¿ç¨ãæä½è¾ä¸ºç®åï¼åªè¦è±çæ¶é´æ¯å¨å¯¼å ¥åå¯¼åºæ°æ®ãä¸é¢å°±æ¥ç®åçä»ç»Mysqlå符åéålatin1转æ¢å°utf8çè¿ç¨ï¼å¤§å®¶å¯ä»¥æ ¹æ®èªå·±å®é æ åµï¼ä¸¾ä¸åä¸ã
ä¸ãMySQLå符é设置
ç³»ç»åéï¼
â character_set_serverï¼é»è®¤çå 鍿ä½å符é
â character_set_clientï¼å®¢æ·ç«¯æ¥æºæ°æ®ä½¿ç¨çå符é
â character_set_connectionï¼è¿æ¥å±å符é
â character_set_resultsï¼æ¥è¯¢ç»æå符é
â character_set_databaseï¼å½åé䏿°æ®åºçé»è®¤å符é
â character_set_systemï¼ç³»ç»å æ°æ®(åæ®µåç)å符é
â è¿æä»¥collation_å¼å¤´çåä¸é¢å¯¹åºçåéï¼ç¨æ¥æè¿°å符åºã
ç¨introduceræå®ææ¬å符串çå符éï¼
â æ ¼å¼ä¸ºï¼[_charset] âstringâ [COLLATE collation]
â ä¾å¦ï¼ 代ç å¦ä¸:  SELECT _latin1 âstringâ;
SELECT _utf8 âä½ å¥½â COLLATE utf8_general_ci;
ç±introducerä¿®é¥°çææ¬å符串å¨è¯·æ±è¿ç¨ä¸ä¸ç»è¿å¤ä½ç转ç ï¼ç´æ¥è½¬æ¢ä¸ºå é¨å符éå¤çã
äºãMySQLä¸çå符é转æ¢è¿ç¨
1. MySQL Serveræ¶å°è¯·æ±æ¶å°è¯·æ±æ°æ®ä»character_set_client转æ¢ä¸ºcharacter_set_connectionï¼
2. è¿è¡å 鍿ä½åå°è¯·æ±æ°æ®ä»character_set_connection转æ¢ä¸ºå 鍿ä½å符éï¼å ¶ç¡®å®æ¹æ³å¦ä¸ï¼
ä½¿ç¨æ¯ä¸ªæ°æ®å段çCHARACTER SET设å®å¼ï¼
è¥ä¸è¿°å¼ä¸åå¨ï¼å使ç¨å¯¹åºæ°æ®è¡¨çDEFAULT CHARACTER SET设å®å¼(MySQLæ©å±ï¼éSQLæ å)ï¼
è¥ä¸è¿°å¼ä¸åå¨ï¼å使ç¨å¯¹åºæ°æ®åºçDEFAULT CHARACTER SET设å®å¼ï¼
è¥ä¸è¿°å¼ä¸åå¨ï¼å使ç¨character_set_server设å®å¼ã
3. å°æä½ç»æä»å 鍿ä½å符é转æ¢ä¸ºcharacter_set_resultsã
ä¸ãå符éè½¬æ¢ ç±latin1转æ¢å°utf8
以忥çå符é为latin1为ä¾ï¼å级æä¸ºutf8çå符éã
忥ç表: databasename (default charset=latin1)ï¼æ°è¡¨ï¼new_databasename(default charset=utf8)ã 代ç å¦ä¸:
mysql> show create database databasename;
+--------------+-------------------------------------------------------------------------+
| Database | Create Database |
+--------------+-------------------------------------------------------------------------+
| databasename | CREATE DATABASE `databasename` |
+--------------+-------------------------------------------------------------------------+
1 row in set (0.00 sec)
1> 导åºè¡¨ç»æï¼ 代ç å¦ä¸: mysqldump -uroot -p --default-character-set=utf8 -d databasename > createtab.sql
å ¶ä¸--default-character-set=utf8 表示设置以ä»ä¹å符éè¿æ¥ï¼ã-d 表示åªå¯¼åºè¡¨ç»æï¼ä¸å¯¼åºæ°æ®ã
2>ä¿®æ¹ãcreatetab.sql ä¸è¡¨ç»æå®ä¹ä¸çå符é为æ°çå符éã 代ç å¦ä¸: sed -i s/CHARSET=latin1/CHARSET=utf8/g `grep -rl "CHARSET=latin1" createtab.sql `
3>ç¡®ä¿è®°å½ä¸åæ´æ°ï¼å¯¼åºææè®°å½ã 代ç å¦ä¸: mysqldump -uroot -p --no-create-info databasename > data.sql
å¯éåæ°ï¼
--quick: 该é项ç¨äºè½¬å¨å¤§ç表ããå®å¼ºå¶ãmysqldump 仿å¡å¨ä¸æ¬¡ä¸è¡å°æ£ç´¢è¡¨ä¸çè¡è䏿¯ãæ£ç´¢ææè¡ï¼å¹¶å¨è¾åºåå°å®ç¼åå°å åä¸ã
--extended-insert: 使ç¨å æ¬å 个ãvalues å表çå¤è¡insertè¯æ³ï¼è¿æ ·ä½¿è½¬å¨æä»¶æ´å°ï¼éè½½æä»¶æ¶å¯ä»¥å éæå ¥ã
--no-create-info: ä¸åéæ°å建æ¯ä¸ªè½¬å¨è¡¨çcreate table è¯å¥ã
--default-character-set=latin1: æç §åæçå符éå¯¼åºæææ°æ®ï¼è¿æ ·å¯¼åºçæä»¶ä¸ï¼ææä¸æé½æ¯å¯è§çï¼ä¸ä¼ä¿åæä¹±ç ã䏿·»å è¯¥åæ°ä»¥é»è®¤å符导åºã
4>æå¼data.sql,å°ãset names latin1 ä¿®æ¹æãset names utf8 ã 代ç å¦ä¸: sed -i s/CHARSET=latin1/CHARSET=utf8/g `grep -rl "CHARSET=latin1" data.sql `
(PSï¼sedå·¥ä½æçæ¯é常é«çï¼å¨æµè¯ä¸60Gçæ°æ®4åé就转æ¢å®æ¯äº)
5>ä½¿ç¨æ°çå符éå建æ°çæ°æ®åºã 代ç å¦ä¸: create database new_databasename default charset utf8;
6>åå»ºè¡¨ï¼æ§è¡ãcreatetab.sql 代ç å¦ä¸: mysql -uroot -p new_databasename < createtab.sql
7>å¯¼å ¥æ°æ®ï¼æ§è¡data.sql 代ç å¦ä¸: mysql -uroot -p new_databasename < data.sql
8ãæ¥çæ°æ°æ®åºçåç¬¦ä¿¡æ¯ ä»£ç å¦ä¸:
mysql> show create database new_databasename;
+------------------+-----------------------------------------------------------------------------+
| Database | Create Database |
+------------------+-----------------------------------------------------------------------------+
| new_databasename | CREATE DATABASE `new_databasename` |
+------------------+-----------------------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show create table type;
+-------+---------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+---------------------------------------------------------------------------------------------+
| type | CREATE TABLE `type` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`Name` varchar(100) CHARACTER SET gb2312 NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=17 DEFAULT CHARSET=utf8 |
+-------+---------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
注æï¼éæ©å符éçæ¶åï¼è¦æ³¨ææå¥½æ¯æºå符çè¶ éï¼æè ç¡®å®æ¯æºå符éçååºæ´å¤§ã