广告
返回顶部
首页 > 资讯 > 数据库 >MySQL中如何使用UTF-8编码
  • 778
分享到

MySQL中如何使用UTF-8编码

2024-04-02 19:04:59 778人浏览 薄情痞子
摘要

这期内容当中小编将会给大家带来有关Mysql中如何使用UTF-8编码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。那么什么是编码?什么是UTF-8?我们都知道,计算机使用

这期内容当中小编将会给大家带来有关Mysql中如何使用UTF-8编码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

那么什么是编码?什么是UTF-8?

我们都知道,计算机使用0和1来存储文本。比如字符“C”被存成“01000011”,那么计算机在显示这个字符时需要经过两个步骤:

1.计算机读取“01000011”,得到数字67,因为67被编码成“01000011”。

2.计算机在Unicode字符集中查找67,找到了“C”。

同样的:

1.我的电脑将“C”映射成Unicode字符集中的67。

2.我的电脑将67编码成“01000011”,并发送给WEB服务器

几乎所有的网络应用都使用了Unicode字符集,因为没有理由使用其他字符集。

Unicode字符集包含了上百万个字符。最简单的编码是UTF-32,每个字符使用32位。这样做最简单,因为一直以来,计算机将32位视为数字,而计算机最在行的就是处理数字。但问题是,这样太浪费空间了。

UTF-8可以节省空间,在UTF-8中,字符“C”只需要8位,一些不常用的字符,比如“”需要32位。其他的字符可能使用16位或24位。一篇类似本文这样的文章,如果使用UTF-8编码,占用的空间只有UTF-32的四分之一左右。

mysql的“utf8”字符集与其他程序不兼容,它所谓的“”,可能真的是一坨……

MySQL简史

为什么Mysql开发者会让“utf8”失效?我们或许可以从提交日志中寻找答案。

MySQL从4.1版本开始支持UTF-8,也就是2003年,而今天使用的UTF-8标准(RFC 3629)是随后才出现的。

旧版的UTF-8标准(RFC 2279)最多支持每个字符6个字节。2002年3月28日,MySQL开发者在***个MySQL 4.1预览版中使用了RFC  2279。

同年9月,他们对MySQL源代码进行了一次调整:“UTF8现在最多只支持3个字节的序列”。

是谁提交了这些代码?他为什么要这样做?这个问题不得而知。在迁移到git后(MySQL最开始使用的是BiTKEeper),MySQL代码库中的很多提交者的名字都丢失了。2003年9月的邮件列表中也找不到可以解释这一变更的线索。

不过我可以试着猜测一下。

2002年,MySQL做出了一个决定:如果用户可以保证数据表的每一行都使用相同的字节数,那么MySQL就可以在性能方面来一个大提升。为此,用户需要将文本列定义为“CHAR”,每个“CHAR”列总是拥有相同数量的字符。如果插入的字符少于定义的数量,MySQL就会在后面填充空格,如果插入的字符超过了定义的数量,后面超出部分会被截断。

MySQL开发者在最开始尝试UTF-8时使用了每个字符6个字节,CHAR(1)使用6个字节,CHAR(2)使用12个字节,并以此类推。

应该说,他们最初的行为才是正确的,可惜这一版本一直没有发布。但是文档上却这么写了,而且广为流传,所有了解UTF-8的人都认同文档里写的东西。

不过很显然,MySQL开发者或厂商担心会有用户做这两件事:

1.使用CHAR定义列(在现在看来,CHAR已经是老古董了,但在那时,在MySQL中使用CHAR会更快,不过从2005年以后就不是这样子了)。

2.将CHAR列的编码设置为“utf8”。

我的猜测是MySQL开发者本来想帮助那些希望在空间和速度上双赢的用户,但他们搞砸了“utf8”编码。

所以结果就是没有赢家。那些希望在空间和速度上双赢的用户,当他们在使用“utf8”的CHAR列时,实际上使用的空间比预期的更大,速度也比预期的慢。而想要正确性的用户,当他们使用“utf8”编码时,却无法保存像“”这样的字符。

在这个不合法的字符集发布了之后,MySQL就无法修复它,因为这样需要要求所有用户重新构建他们的数据库。最终,MySQL在2010年重新发布了“utf8mb4”来支持真正的UTF-8。

为什么这件事情会让人如此抓狂

因为这个问题,我整整抓狂了一个礼拜。我被“utf8”愚弄了,花了很多时间才找到这个bug。但我一定不是***的一个,网络上几乎所有的文章都把“utf8”当成是真正的UTF-8。

“utf8”只能算是个专有的字符集,它给我们带来了新问题,却一直没有得到解决。

上述就是小编为大家分享的MySQL中如何使用UTF-8编码了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网数据库频道。

您可能感兴趣的文档:

--结束END--

本文标题: MySQL中如何使用UTF-8编码

本文链接: https://www.lsjlt.com/news/57578.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • MySQL中如何使用UTF-8编码
    这期内容当中小编将会给大家带来有关MySQL中如何使用UTF-8编码,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。那么什么是编码什么是UTF-8我们都知道,计算机使用0和...
    99+
    2022-10-18
  • 如何在mysql数据库中设置utf-8编码
    这篇文章给大家介绍如何在mysql数据库中设置utf-8编码,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。修改/etc/my.cnf或者/etc/mysql/my.cnf文件[clie...
    99+
    2022-10-18
  • MySQL中不能使用UTF-8编码方式的原因
    下面一起来了解下MySQL中不能使用UTF-8编码方式的原因,相信大家看完肯定会受益匪浅,文字在精不在多,希望MySQL中不能使用UTF-8编码方式的原因这篇短内容是你想要的。    &...
    99+
    2022-10-18
  • 为何不要在MySQL中使用UTF-8编码方式详解
    MySQL的UTF-8编码方式 MySQL 从 4.1 版本开始支持 UTF-8,也就是 2003 年,然而目前流行的UTF-8 标准(RFC 3629)是在此之后规定的。正因此,才造就了MySQL中的U...
    99+
    2022-10-18
  • php如何更改编码为utf-8
    这篇“php如何更改编码为utf-8”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“php如何更改编码为utf-8”文章吧。首...
    99+
    2023-07-05
  • MYSQL数据库中怎么设置UTF-8编码
    MYSQL数据库中怎么设置UTF-8编码,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。一、检查当前数据库编码。使用语句:show variab...
    99+
    2022-10-18
  • python 利用utf-8编码判断中文
    下面这个小工具包含了判断unicode是否是汉字、数字、英文或者其他字符,全角符号转半角符号,unicode字符串归一化等工作。 #!/usr/bin/env python # -*- coding:GBK -*- """汉字...
    99+
    2023-01-31
    中文 python utf
  • php页面如何设置utf-8编码
    这篇文章主要介绍了php页面如何设置utf-8编码,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。php页面设置utf-8的方法:首先打开相应的PHP页面文件;然后在响应报文中...
    99+
    2023-06-06
  • php如何转换utf-8编码格式
    这篇文章主要介绍了php如何转换utf-8编码格式的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇php如何转换utf-8编码格式文章都会有所收获,下面我们一起来看看吧。一、 utf-8编码格式简介utf-8编码...
    99+
    2023-07-05
  • J2ME中如何读取Unicode和UTF-8编码文件
    本篇文章为大家展示了J2ME中如何读取Unicode和UTF-8编码文件,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。向大家简单介绍一下J2ME中读取Unicode...
    99+
    2022-10-19
  • Java中如何对字符串进行utf-8编码
    目录java对字符串进行utf-8编码java按照字节截取字符串-utf-8总结java对字符串进行utf-8编码 我们在调用第三方 API 时,常常会被要求用到路径变量,而路径变量...
    99+
    2023-05-15
    Java字符串 字符串utf-8编码 Java utf-8编码
  • php如何把字符串转为utf-8编码
    这篇文章给大家分享的是有关php如何把字符串转为utf-8编码的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。php有什么特点1、执行速度快。2、具有很好的开放性和可扩展性。3、PHP支持多种主流与非主流的数据库。...
    99+
    2023-06-15
  • php如何将汉字转换为UTF-8编码
    PHP是一种广泛应用的编程语言,而Unicode编码是一种全球性的字符编码标准。在PHP中,处理汉字编码是一个常见的需求,本文将介绍如何将汉字转换为UTF-8编码。一、原理UTF-8是一种可变长度的编码,可以表示Unicode编码中的所有字...
    99+
    2023-05-14
    php
  • HTML5 UTF-8 中文乱码如何解决
    本篇内容主要讲解“HTML5 UTF-8 中文乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“HTML5 UTF-8 中文乱码如何解决”吧!代码如下:...
    99+
    2022-10-19
  • php如何将数据编码从utf-8转为gbk
    这篇文章主要介绍“php如何将数据编码从utf-8转为gbk”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“php如何将数据编码从utf-8转为gbk”文章能帮助大家解决问题。在php中,可以利用ic...
    99+
    2023-06-29
  • Linux 下如何将使用各种字符编码的文件转化为UTF-8编码
    Linux 下如何将使用各种字符编码的文件转化为UTF-8编码,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。我们将一起看一看如何在 Linux 下将使用...
    99+
    2023-06-05
  • 为什么在MySQL中不建议使用UTF-8
    最近我遇到了一个 bug,我试着通过 Rails 在以“utf8”编码的 MariaDB 中保存一个 UTF-8 字符串,然后出现了一个离奇的错误: Incorrect string value: ‘\xF0\x9...
    99+
    2022-05-16
    MySQL UTF-8
  • 为什么不建议在 MySQL 中使用 UTF-8?
    最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误:Incorrect string value:&nb...
    99+
    2022-10-18
  • 记住:永远不要在 MySQL 中使用 UTF-8
    阅读本文大概需要 3.6 分钟。 译文:http://suo.im/4zBuvs 来自:http://ju.outofmemory.cn 最近我遇到了一个bug,我试着通过Rails在以“...
    99+
    2022-10-18
  • php转utf-8中文乱码如何解决
    本篇内容主要讲解“php转utf-8中文乱码如何解决”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“php转utf-8中文乱码如何解决”吧!php转utf-8中文乱码的解决办法:1、在代码开始处加...
    99+
    2023-07-05
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作