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的区别:https://www.freexyz.cn/article/90037.htm
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对免费资源网的支持。
您可能感兴趣的文章
- 12-31hiredis从安装到项目实战操作
- 12-31phpmyadmin登录时怎么指定服务器ip和端口
- 12-31MySQL线上死锁分析实战
- 12-31MySQL 触发器的使用和理解
- 12-31MySQL 字段默认值该如何设置
- 12-31Redis主从同步配置的方法步骤(图文)
- 12-31MySQL 字符串拆分操作(含分隔符的字符串截取)
- 12-31redis 交集、并集、差集的具体使用
- 12-31MySQL精讲之二:DML数据操作语句
- 12-31PostgreSQL判断字符串是否包含目标字符串的多种方法


阅读排行
推荐教程
- 12-07mysql中外链接是什么意思?
- 12-23PL/SQL登录Oracle数据库报错ORA-12154:TNS:无法解析指定的连接标识符
- 12-07mysql数据库表格怎么建立
- 12-05mysql的事务,隔离级别和锁用法实例分析
- 12-19Redis中实现查找某个值的范围
- 12-11mysql代码执行结构实例分析【顺序、分支、循环结构】
- 12-15浅析mysql迁移到clickhouse的5种方法
- 12-08添加mysql的用户名和密码是什么语句?
- 12-07mysql的数据类型有哪些?
- 12-23详解Oracle游标的简易用法




