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

 更新时间:2019年07月12日 14:55:31   作者:茅十八  
这篇文章主要给大家介绍了关于MySQL字符集utf8修改为utf8mb4的方法步骤,文中通过示例代码介绍的非常详细,对大家学习或者使用MySQL具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

对于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.jb51.net/article/90037.htm

总结

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

相关文章

  • 在Hadoop集群环境中为MySQL安装配置Sqoop的教程

    在Hadoop集群环境中为MySQL安装配置Sqoop的教程

    这篇文章主要介绍了在Hadoop集群环境中为MySQL安装配置Sqoop的教程,Sqoop一般被用于数据库软件之间的数据迁移,需要的朋友可以参考下
    2015-12-12
  • 解决net start mysql--服务无法启动 服务没有报告任何错误问题

    解决net start mysql--服务无法启动 服务没有报告任何错误问题

    这篇文章主要介绍了解决net start mysql--服务无法启动 服务没有报告任何错误问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-12-12
  • windows下mysql 5.7版本中修改编码为utf-8的方法步骤

    windows下mysql 5.7版本中修改编码为utf-8的方法步骤

    mysql的默认编码是拉丁(latin1),当输入中文的时候就会报错,所以需要将编码修改为utf8,从网上找了相关教程都不可以,索性自己摸索后分享给大家,下面这篇文章主要给大家介绍了在mysql 5.7版本中如何修改编码为utf-8的方法步骤,需要的朋友可以参考下。
    2017-06-06
  • JDBC连接mysql处理中文时乱码解决办法详解

    JDBC连接mysql处理中文时乱码解决办法详解

    这篇文章主要介绍了JDBC连接mysql处理中文时乱码解决办法详解的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-10-10
  • centos6.5中rpm包安装mysql5.7初始化出错的解决方法

    centos6.5中rpm包安装mysql5.7初始化出错的解决方法

    这篇文章主要介绍了centos6.5中rpm包安装mysql5.7初始化出错的解决方法,需要的朋友可以参考下
    2017-09-09
  • MAC下MySQL忘记初始密码怎么办

    MAC下MySQL忘记初始密码怎么办

    MySQL初始密码忘记怎么办,这篇文章主要介绍了MAC下MySQL忘记初始密码的解决方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • MySQL中的批量修改、插入操作数据库

    MySQL中的批量修改、插入操作数据库

    在平常的项目中,我们会需要批量操作数据库的时候,例如:批量修改,批量插入,那我们不应该使用 for 循环去操作数据库,这样会导致我们反复与数据库发生连接和断开连接,影响性能和增加操作时间,所以可以使用SQL 批量修改的方式去操作数据库,感兴趣的朋友一起学习下吧
    2023-09-09
  • MySQL聚合查询案例讲解

    MySQL聚合查询案例讲解

    这篇文章主要介绍了MySQL聚合查询案例讲解,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-03-03
  • MySQL主键自增会遇到的坑及解决方法

    MySQL主键自增会遇到的坑及解决方法

    主键不用随机字符串用什么?主键自增?主键自增就是最佳方案吗?有没有其他坑?今天我们就来讨论下这个话题,感兴趣的小伙伴可以收藏一下
    2023-04-04
  • mysql多表联合查询返回一张表的内容实现代码

    mysql多表联合查询返回一张表的内容实现代码

    在使用mysql多表联合查询时怎样可以做到只返回返回一张表的内容,本文将详细介绍,需要了解的朋友可以参考下
    2012-12-12

最新评论