MYSQL 字符集问题
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)当在表内设置一栏时,除非清晰指定,不然此栏缺省的字符集就是表默许的字符集;
简略的总结一下,假如什么地方都不修正,那么一切的数据库的一切表的一切栏位的都用 latin1 存储,不过我们假如装置 MySQL,一般都会挑选多语言支撑,也就是说,装置程序会主动在搭配文件中把 default_character_set 设置为 UTF-8,这确保了缺省情况下,一切的数据库的一切表的一切栏位的都用 UTF-8 存储。
2.检查默许字符集(默许情况下,mysql的字符集是latin1(ISO_8859_1)
一般,检查统一的字符集和排序方法的设定能够经过下面的两条指令:
mysql> SHOW VARIABLES LIKE 'character%';