欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

MySQL字符集utf8修改为utf8mb4的方法步骤

程序员文章站 2022-09-24 14:05:09
对于mysql 5.5 而言,如果不设定字符集,mysql默认的字符集是 latin1 拉丁文字符集; 但随着各种业务的进一步发展,除了各个国家的本身语言字符,经常也会有...

对于mysql 5.5 而言,如果不设定字符集,mysql默认的字符集是 latin1 拉丁文字符集;

但随着各种业务的进一步发展,除了各个国家的本身语言字符,经常也会有一些表情符号出现在应用程序中,而在mysql 5.5 之前,utf-8编码只支持1-3个字节,支持bmp这部分的unicode编码区;从mysql 5.5开始,可以支持4个字节utf编码 utf8mb4 ,一个字符能够支持更多的字符集,也能够支持更多表情符号。

utf8mb4兼容utf8,且比utf8能表示更多的字符,是utf8字符集的超集。所以现在一些新的业务,比如iso等,会将mysql数据库的字符集设置为utf8mb4。

今天在处理一个应用需求的时候,就遇到这样一个问题:

当然调整的最好方法是客户端,mysql数据库的字符集都修改为utf8mb4,但这样修改量比较大,而且如果客户端一部分修改为utf8,一部分为utf8mb4的话,容易发生混乱。

经过几次测试后,mysql数据库的my.cnf中关于字符集的配置修改为下面的配置了:

[client] 
default-character-set=utf8mb4 
 
[mysqld] 
character-set-server = utf8mb4 
collation-server = utf8mb4_unicode_ci 
init_connect='set names utf8mb4' 
skip-character-set-client-handshake = true 
 
[mysql] 
default-character-set = utf8mb4 

使用mysql字符集时的建议

• 建立数据库/表和进行数据库操作时尽量显式指出使用的字符集,而不是依赖于mysql的默认设置,否则mysql升级时可能带来很大困扰;

• 数据库和连接字符集都使用latin1时虽然大部分情况下都可以解决乱码问题,但缺点是无法以字符为单位来进行sql操作,一般情况下将数据库和连接字符集都置为utf8是较好的选择;

• 使用mysql c api时,初始化数据库句柄后马上用mysql_options设定mysql_set_charset_name属性为utf8,这样就不用显式地用 set names语句指定连接字符集,且用mysql_ping重连断开的长连接时也会把连接字符集重置为utf8;

• 对于mysql php api,一般页面级的php程序总运行时间较短,在连接到数据库以后显式用set names语句设置一次连接字符集即可;但当使用长连接时,请注意保持连接通畅并在断开重连后用set names语句显式重置连接字符集。

全面了解mysql中utf8和utf8mb4的区别:

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。