百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 主页>网站教程>数据库> MySQL乱码的缘由和设定UTF8数据格局的办法介绍
分享文章到:

MySQL乱码的缘由和设定UTF8数据格局的办法介绍

发布时间:08/01 来源:未知 浏览: 关键词:
本篇文章给大家带来的内容是对于MySQL乱码的缘由和设定UTF8数据格局的办法介绍,有一定的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。 本篇文章给大家带来的内容是对于MySQL乱码的缘由和设定UTF8数据格局的办法介绍,有一定的参照 价值,有需要的伴侣可以参照 一下,但愿对你有所帮忙。

MySQL运用时,有一件很疼痛的事情确定是效果乱码。将编码格局都设定为UTF8可以解决这个题目,我们今天来说下为何要这么设定,以及怎么设定。

MySQL字符格局

字符集

在编程说话中,我们为了防止中文乱码,会运用unicode对中文字符做处置,而为了落低网络带宽和节俭存储空间,我们运用UTF8进行编码。对这两者有什么不一样不足理解的同窗,可以参照 Unicode字符集和UTF8编码编码的前世今生这篇文章。

一样在MySQL中,我们也会有这样的处置,我们可以查看目前数据库设定的编码方式(字符集):

mysql> show variables like '%char%';
+--------------------------+----------------------------------+
| Variable_name            | Value                            |
+--------------------------+----------------------------------+
| character_set_client     | latin1                           | 
| character_set_connection | latin1                           | 
| character_set_database   | latin1                           | 
| character_set_filesystem | binary                           | 
| character_set_results    | latin1                           | 
| character_set_server     | latin1                           | 
| character_set_system     | utf8                             | 
| character_sets_dir       | /usr/local/mysql/share/charsets/ | 
+--------------------------+----------------------------------+
8 rows in set (0.00 sec)

表中就是目前设定的字符集,先看不消关注的几个值:

character_set_filesystem | binary:文件系统上的存储格局,默许为binary(二进制)

character_set_system | utf8:系统的存储格局,默许为utf8

character_sets_dir | /usr/local/mysql/share/charsets/:可以运用的字符集的文件途径

剩下的几个就是日常影响读写乱码的参数了:
- character_set_client:客户端要求数据的字符集
- character_set_connection:从客户端接收到数据,然后传输的字符集
- character_set_database:默许数据库的字符集;要是没有默许数据库,运用character_set_server字段
- character_set_results:效果集的字符集
- character_set_server:数据库办事器的默许字符集

MySQL中的字符序名称遵从命名惯例:以字符序对应的字符集名称开头;以_ci(表示大小写不敏锐,case insensitive)、_cs(表示大小写敏锐,case sensitive)或_bin(表示按编码值比拼,binary)结尾。例如:在字符序“utf8_general_ci”下,字符“a”和“A”是等价的;

因而字符序不一样于字符集,用于数据库字段的相称或大小比拼。我们查看MySQL实例设定的字符序:

mysql> show variables like 'collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | latin1_swedish_ci | 
| collation_database   | latin1_swedish_ci | 
| collation_server     | latin1_swedish_ci | 
+----------------------+-------------------+
3 rows in set (0.00 sec)

跟utf8对应的常用字符序是:utf8_unicode_ci/utf8_general_ci和utf8_bin等,那么他们的区别有哪些呢?

1、_bin是用二进制存储并比拼,区别大小写,存储二进制内容时运用

2、utf8_general_ci:校对速度快,但正确度稍差,运用中英文时运用

3、utf8_unicode_ci:正确度高,但校对速度稍慢,运用德法俄等外语时运用

细致的区别可以参照 Mysql中的排序法则utf8_unicode_ci、utf8_general_ci的区别总结。

修改字符集和字符序

要是在MySQL连贯时,涌现了乱码的题目,那么根本可以肯定是各个字符集/序设定不同一的缘由。MySQL默许的latin1格局不支撑中文,因为我们在中国,所以选中对中文和各说话支撑都非常完美的utf8格局。所以,我们需要将需要关注的字符集和字符序都修改为utf8格局。

你也可以选中utf8mb4格局,这个格局支撑保留emoji

以上就是MySQL乱码的缘由和设定UTF8数据格局的办法介绍的细致内容,更多请关注 百分百源码网 其它相干文章!

打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有152人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助

能出一分力是一分吧!

订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板