mysql 字符集总结

来源:互联网 发布:net域名为什么遇冷 编辑:程序博客网 时间:2024/06/05 09:12
mysql 字符集
utf8mb4 和utf8的区别
MySQL 5.5 之前, UTF8 编码只支持1-3个字节 
从MYSQL5.5开始,可支持4个字节UTF编码utf8mb4,一个字符最多能有4字节,utf8mb4兼容utf8,所以能支持更多的字符集。 
表情符号需要使用utf8mb4
数据库设置:
1.列设置
var1 varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL
2. 表设置
ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
set character_set_database=utf8mb4
set character_set_server = utf8mb4
即可
PS:执行上述sql,show variables like 'character%'; 发现value改成了utf8mb4,其实是假象,mysql 服务重启后又恢复原样了。需要修改my.ini文件。注意修改的时候需要以ANSI格式编码保存。


字符集在myql中的应用。http://www.blogjava.net/wldandan/archive/2007/09/04/142669.html
编译mysql    默认使用latin1
安装mysql   在my.ini里面指定默认的字符集 例如default-character-set=utf8。
启动mysqld,即开启mysql服务。可以在命令行设置一个默认的字符集。如果没有设置,使用配置文件里面的。character_set_server此时就被设定为这个这个默认的字符集;
创建数据库,数据库默认的字符集为character_set_server。即character_set_database=character_set_server
选定数据库,character_set_database=character_set_server
创建表和表中的字段,默认的字符集是character_set_database


简单的总结一下,如果什么地方都不修改,那么所有的数据库的所有表的所有栏位的都用 latin1 存储,不过我们如果安装 MySQL,一般都会选择多语言支持,也就是说,安装程序会自动在配置文件中把 default_character_set 设置为 UTF-8,这保证了缺省情况下,所有的数据库的所有表的所有栏位的都用 UTF-8 存储。


--------------------------------------------------------------------------------
表需要存放emoj表情字段的设置。http://stackoverflow.com/questions/13653712/java-sql-sqlexception-incorrect-string-value-xf0-x9f-x91-xbd-xf0-x9f
1.设置驱动器连接字符集
a driver agnostic way to set connection charset is to send the query
stmtt.executeUpdate("SET NAMES 'utf8mb4'"); 告诉 mysql driver 驱动器 使用utf8mb4 连接字符集
或者
在my.ini设置character_set_server = utf8mb4 
这样Connector/J 就会选择utf8mb4 作为连接字符集了。网上说characterEncoding 不能设置,否则会覆盖my.ini的设置,其实是不会覆盖的,以my.ini里面的为准。
2.设置数据表的字段的字符集
var1 varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL


如果是从数据库中取emoj表情字段就不需要太多的设置了,直接一点就行。


1 0