近日发现很多人为
MySQL中文乱码问题所困扰。于是就这个问题做一下浅析。不正确的地方希望大家指正
/*
来源
PHPfans
网址:http://www.phpfans.net
*/
乱码产生原因mysql字符编码是版本4.1引入的,支持多国语言,而且一些特性已经超过了其他的
数据库系统。
我们可以在MySQL Command Line Client 下输入如下命令查看mysql的字符集
mysql> SHOW CHARACTER SET;
+----------+-----------------------------+---------------------+--------+
| Charset??| Description? ?? ?? ?? ?? ???| Default collation? ?| Maxlen |
+----------+-----------------------------+---------------------+--------+
| big5? ???| Big5 Traditional Chinese? ? | big5_chinese_ci? ???| 2? ?? ?|
| dec8? ???| DEC West European? ?? ?? ???| dec8_swedish_ci? ???| 1? ?? ?|
| cp850? ? | DOS West European? ?? ?? ???| cp850_general_ci? ? | 1? ?? ?|
| hp8? ?? ?| HP West European? ?? ?? ?? ?| hp8_english_ci? ?? ?| 1? ?? ?|
| koi8r? ? | KOI8-R Relcom Russian? ?? ? | koi8r_general_ci? ? | 1? ?? ?|
| latin1? ?| cp1252 West European? ?? ???| latin1_swedish_ci? ?| 1? ?? ?|
| latin2? ?| ISO 8859-2 Central European | latin2_general_ci? ?| 1? ?? ?|
| swe7? ???| 7bit Swedish? ?? ?? ?? ?? ? | swe7_swedish_ci? ???| 1? ?? ?|
| ascii? ? | US ASCII? ?? ?? ?? ?? ?? ???| ascii_general_ci? ? | 1? ?? ?|
| ujis? ???| EUC-JP Japanese? ?? ?? ?? ? | ujis_japanese_ci? ? | 3? ?? ?|
| sjis? ???| Shift-JIS Japanese? ?? ?? ? | sjis_japanese_ci? ? | 2? ?? ?|
| hebrew? ?| ISO 8859-8 Hebrew? ?? ?? ???| hebrew_general_ci? ?| 1? ?? ?|
| tis620? ?| TIS620 Thai? ?? ?? ?? ?? ???| tis620_thai_ci? ?? ?| 1? ?? ?|
| euckr? ? | EUC-KR Korean? ?? ?? ?? ?? ?| euckr_korean_ci? ???| 2? ?? ?|
| koi8u? ? | KOI8-U Ukrainian? ?? ?? ?? ?| koi8u_general_ci? ? | 1? ?? ?|
| gb2312? ?| GB2312 Simplified Chinese? ?| gb2312_chinese_ci? ?| 2? ?? ?|
| greek? ? | ISO 8859-7 Greek? ?? ?? ?? ?| greek_general_ci? ? | 1? ?? ?|
| cp1250? ?| Windows Central European? ? | cp1250_general_ci? ?| 1? ?? ?|
| gbk? ?? ?| GBK Simplified Chinese? ?? ?| gbk_chinese_ci? ?? ?| 2? ?? ?|
| latin5? ?| ISO 8859-9 Turkish? ?? ?? ? | latin5_turkish_ci? ?| 1? ?? ?|
| armscii8 | ARMSCII-8 Armenian? ?? ?? ? | armscii8_general_ci | 1? ?? ?|
| utf8? ???| UTF-8 Unicode? ?? ?? ?? ?? ?| utf8_general_ci? ???| 3? ?? ?|
| ucs2? ???| UCS-2 Unicode? ?? ?? ?? ?? ?| ucs2_general_ci? ???| 2? ?? ?|
| cp866? ? | DOS Russian? ?? ?? ?? ?? ???| cp866_general_ci? ? | 1? ?? ?|
| keybcs2??| DOS Kamenicky Czech-Slovak??| keybcs2_general_ci??| 1? ?? ?|
| macce? ? | Mac Central European? ?? ???| macce_general_ci? ? | 1? ?? ?|
| macroman | Mac West European? ?? ?? ???| macroman_general_ci | 1? ?? ?|
| cp852? ? | DOS Central European? ?? ???| cp852_general_ci? ? | 1? ?? ?|
| latin7? ?| ISO 8859-13 Baltic? ?? ?? ? | latin7_general_ci? ?| 1? ?? ?|
| cp1251? ?| Windows Cyrillic? ?? ?? ?? ?| cp1251_general_ci? ?| 1? ?? ?|
| cp1256? ?| Windows Arabic? ?? ?? ?? ???| cp1256_general_ci? ?| 1? ?? ?|
| cp1257? ?| Windows Baltic? ?? ?? ?? ???| cp1257_general_ci? ?| 1? ?? ?|
| binary? ?| Binary pseudo charset? ?? ? | binary? ?? ?? ?? ???| 1? ?? ?|
| geostd8??| GEOSTD8 Georgian? ?? ?? ?? ?| geostd8_general_ci??| 1? ?? ?|
| cp932? ? | SJIS for Windows Japanese? ?| cp932_japanese_ci? ?| 2? ?? ?|
| eucjpms??| UJIS for Windows Japanese? ?| eucjpms_japanese_ci | 3? ?? ?|
+----------+-----------------------------+---------------------+--------+
36 rows in set (0.02 sec)
更多mysql的字符集知识可以参考
http://www.phpfans.net论坛的
http://www.phpfans.net/bbs/viewthread.php?tid=296&extra=page%3D1或者mysql官方的
http://dev.mysql.com/doc/refman/5.1/zh/charset.htmlMySQL 4.1的字符集支持(Character Set Support)有两个方面:字符集(Character set)和排序方式(Collation)。对于字符集的支持细化到四个层次: 服务器(server),数据库(database),数据表(table)和连接(connection)。
查看系统的字符集和排序方式的设定可以通过下面的两条命令:
mysql> SHOW VARIABLES LIKE 'character_set_%';
+--------------------------+-------------------------------------------+
| Variable_name? ?? ?? ?? ?| Value? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ? |
+--------------------------+-------------------------------------------+
| character_set_client? ???| latin1? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? ?|
| character_set_
关键词标签:及其,解决,原因,方法,
查看所有0条评论>>