MySQLµÄ×Ö·û¼¯Ö§³Ö(Character Set Support)ÓÐÁ½¸ö·½Ã棺
×Ö·û¼¯(Character set)ºÍÅÅÐò·½Ê½(Collation)¡£
¶ÔÓÚ×Ö·û¼¯µÄÖ§³Öϸ»¯µ½Ëĸö²ã´Î:
·þÎñÆ÷(server)£¬Êý¾Ý¿â(database)£¬Êý¾Ý±í(table)ºÍÁ¬½Ó(connection)¡£
1.MySQLĬÈÏ×Ö·û¼¯
MySQL¶ÔÓÚ×Ö·û¼¯µÄÖ¸¶¨¿ÉÒÔϸ»¯µ½Ò»¸öÊý¾Ý¿â£¬Ò»ÕÅ±í£¬Ò»ÁУ¬Ó¦¸ÃÓÃʲô×Ö·û¼¯¡£µ«ÊÇ£¬´«Í³µÄ³ÌÐòÔÚ´´½¨Êý¾Ý¿âºÍÊý¾Ý±íʱ²¢Ã»ÓÐʹÓÃÄÇô¸´ÔÓµÄÅäÖã¬ËüÃÇÓõÄÊÇĬÈϵÄÅäÖã¬ÄÇô£¬Ä¬ÈϵÄÅäÖôӺζøÀ´ÄØ£¿
(1)±àÒëMySQL ʱ£¬Ö¸¶¨ÁËÒ»¸öĬÈϵÄ×Ö·û¼¯£¬Õâ¸ö×Ö·û¼¯ÊÇ latin1£»
(2)°²×°MySQL ʱ£¬¿ÉÒÔÔÚÅäÖÃÎļþ (my.ini) ÖÐÖ¸¶¨Ò»¸öĬÈϵĵÄ×Ö·û¼¯£¬Èç¹ûûָ¶¨£¬Õâ¸öÖµ¼Ì³Ð×Ô±àÒëʱָ¶¨µÄ£»
(3)Æô¶¯mysqld ʱ£¬¿ÉÒÔÔÚÃüÁîÐвÎÊýÖÐÖ¸¶¨Ò»¸öĬÈϵĵÄ×Ö·û¼¯£¬Èç¹ûûָ¶¨£¬Õâ¸öÖµ¼Ì³Ð×ÔÅäÖÃÎļþÖеÄÅäÖÃ,´Ëʱ character_set_server ±»É趨ΪÕâ¸öĬÈϵÄ×Ö·û¼¯£»
(4)µ±´´½¨Ò»¸öеÄÊý¾Ý¿âʱ£¬³ý·ÇÃ÷È·Ö¸¶¨£¬Õâ¸öÊý¾Ý¿âµÄ×Ö·û¼¯±»È±Ê¡É趨Ϊcharacter_set_server£»
(5)µ±Ñ¡¶¨ÁËÒ»¸öÊý¾Ý¿âʱ£¬character_set_database ±»É趨ΪÕâ¸öÊý¾Ý¿âĬÈϵÄ×Ö·û¼¯£»
(6)ÔÚÕâ¸öÊý¾Ý¿âÀï´´½¨Ò»Õűíʱ£¬±íĬÈϵÄ×Ö·û¼¯±»É趨Ϊ character_set_database£¬Ò²¾ÍÊÇÕâ¸öÊý¾Ý¿âĬÈϵÄ×Ö·û¼¯£»
(7)µ±ÔÚ±íÄÚÉèÖÃÒ»À¸Ê±£¬³ý·ÇÃ÷È·Ö¸¶¨£¬·ñÔò´ËÀ¸È±Ê¡µÄ×Ö·û¼¯¾ÍÊDZíĬÈϵÄ×Ö·û¼¯£»
¼òµ¥µÄ×ܽáһϣ¬Èç¹ûʲôµØ·½¶¼²»Ð޸ģ¬ÄÇôËùÓеÄÊý¾Ý¿âµÄËùÓбíµÄËùÓÐÀ¸Î»µÄ¶¼Óà latin1 ´æ´¢£¬²»¹ýÎÒÃÇÈç¹û°²×° MySQL£¬Ò»°ã¶¼»áÑ¡Ôñ¶àÓïÑÔÖ§³Ö£¬Ò²¾ÍÊÇ˵£¬°²×°³ÌÐò»á×Ô¶¯ÔÚÅäÖÃÎļþÖÐ°Ñ default_character_set ÉèÖÃΪ UTF-8£¬Õâ±£Ö¤ÁËȱʡÇé¿öÏ£¬ËùÓеÄÊý¾Ý¿âµÄËùÓбíµÄËùÓÐÀ¸Î»µÄ¶¼Óà UTF-8 ´æ´¢¡£
2.²é¿´Ä¬ÈÏ×Ö·û¼¯(ĬÈÏÇé¿öÏ£¬mysqlµÄ×Ö·û¼¯ÊÇlatin1(ISO_8859_1)
ͨ³££¬²é¿´ÏµÍ³µÄ×Ö·û¼¯ºÍÅÅÐò·½Ê½µÄÉ趨¿ÉÒÔͨ¹ýÏÂÃæµÄÁ½ÌõÃüÁ
mysql> SHOW VARIABLES LIKE 'character%';
+--------------------------+---------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------+
| character_set_client | latin1 |
| character_set_connection | latin1 |
| character_set_database | latin1 |
| character_set_filesystem | binary |
| character_set_results | latin1 |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+
mysql> SHOW VARIABLES LIKE 'collation_%';
+----------------------+-----------------+
| Variable_name | Value |
+----------------------+-----------------+
| collation_connection | utf8_general_ci |
| collation_database | utf8_general_ci |
| collation_server | utf8_general_ci |
+----------------------+-----------------+
3.ÐÞ¸ÄĬÈÏ×Ö·û¼¯
(1) ×î¼òµ¥µÄÐ޸ķ½·¨£¬¾ÍÊÇÐÞ¸ÄmysqlµÄmy.iniÎļþÖеÄ×Ö·û¼¯¼üÖµ£¬
Èç default-character-set = utf8
character_set_server = utf8
ÐÞ¸ÄÍêºó£¬ÖØÆômysqlµÄ·þÎñ£¬service mysql restart
ʹÓà mysql> SHOW VARIABLES LIKE 'character%';²é¿´£¬·¢ÏÖÊý¾Ý¿â±àÂë¾ùÒѸijÉutf8
+--------------------------+---------------------------------+
| Variable_name | Value |
+--------------------------+---------------------------------+
| character_set_client | utf8 |
| character_set_connection | utf8 |
| character_set_database | utf8 |
| character_set_filesystem | binary |
| character_set_results | utf8 |
| character_set_server | utf8 |
| character_set_system | utf8 |
| character_sets_dir | D:"mysql-5.0.37"share"charsets" |
+--------------------------+---------------------------------+
(2) »¹ÓÐÒ»ÖÖÐÞ¸Ä×Ö·û¼¯µÄ·½·¨£¬¾ÍÊÇʹÓÃmysqlµÄÃüÁî
mysql> SET character_set_client = utf8 ;
mysql> SET character_set_connection = utf8 ;
mysql> SET character_set_database = utf8 ;
mysql> SET character_set_results = utf8 ;
mysql> SET character_set_server = utf8 ;
mysql> SET collation_connection = utf8 ;
mysql> SET collation_database = utf8 ;
mysql> SET collation_server = utf8 ;
Ò»°ã¾ÍËãÉèÖÃÁ˱íµÄĬÈÏ×Ö·û¼¯Îªutf8²¢ÇÒͨ¹ýUTF-8±àÂë·¢ËͲéѯ£¬Äã»á·¢ÏÖ´æÈëÊý¾Ý¿âµÄÈÔÈ»ÊÇÂÒÂë¡£ÎÊÌâ¾Í³öÔÚÕâ¸öconnectionÁ¬½Ó²ãÉÏ¡£½â¾ö·½·¨ÊÇÔÚ·¢ËͲéѯǰִÐÐÒ»ÏÂÏÂÃæÕâ¾ä£º
SET NAMES 'utf8';
ËüÏ൱ÓÚÏÂÃæµÄÈý¾äÖ¸Á
SET character_set_client = utf8;
SET character_set_results = utf8;
SET character_set_connection = utf8;
×ܽá:
Òò´Ë£¬Ê¹ÓÃʲôÊý¾Ý¿â°æ±¾£¬²»¹ÜÊÇ3.x£¬»¹ÊÇ4.0.x»¹ÊÇ4.1.x£¬Æäʵ¶ÔÎÒÃÇÀ´Ëµ²»ÖØÒª£¬ÖØÒªµÄÓжþ£º
1) ÕýÈ·µÄÉ趨Êý¾Ý¿â±àÂë.MySQL4.0ÒÔÏ°汾µÄ×Ö·û¼¯×ÜÊÇĬÈÏISO8859-1£¬MySQL4.1ÔÚ°²×°µÄʱºò»áÈÃÄãÑ¡Ôñ¡£Èç¹ûÄã×¼±¸Ê¹ÓÃUTF- 8£¬ÄÇôÔÚ´´½¨Êý¾Ý¿âµÄʱºò¾ÍÒªÖ¸¶¨ºÃUTF-8(´´½¨ºÃÒÔºóÒ²¿ÉÒԸģ¬4.1ÒÔÉÏ°æ±¾»¹¿ÉÒÔµ¥¶ÀÖ¸¶¨±íµÄ×Ö·û¼¯)
2) ÕýÈ·µÄÉ趨Êý¾Ý¿âconnection±àÂë.ÉèÖúÃÊý¾Ý¿âµÄ±àÂëºó£¬ÔÚÁ¬½ÓÊý¾Ý¿âʱºò£¬Ó¦¸ÃÖ¸¶¨connectionµÄ±àÂ룬±ÈÈçʹÓÃjdbcÁ¬½Óʱ£¬Ö¸¶¨Á¬½ÓΪutf8·½Ê½.