MySQL字符集utf8修改为utf8mb4的方法步骤
对于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的区别:
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对的支持。
上一篇: 如何理解与识别Linux中的文件类型
下一篇: 这种sql写法真的会导致索引失效吗