jdbc:mysql://localhost/mydatabase?useUnicode=true&characterEncoding=UTF-8&charset=utf8——字符编码与字符集

1.问题背景

在做一个学生信息管理系统时,需要用到数据库连接相关的东西,那么一个小伙伴就对dbURL产生了一些疑问,他很好奇useUnicode和characterEncoding究竟是什么意思呢?

jdbc:mysql://localhost/mydatabase?useUnicode=true&characterEncoding=UTF-8&charset=utf8

2.字符集和字符编码

经过各种查资料,我们了解到,这是定义是否使用Unicode字符集和使用那种字符编码的意义。
字符集(Character Set)和字符编码(Character Encoding)是用于表示和处理文本数据的重要概念。
那么首先我们需要了解一下什么是字符集和字符编码:

1.字符集

字符集(Character Set)是一个字符的集合,它定义了一种映射关系,将每个字符与一个唯一的数字代码对应起来。常见的字符集包括 ASCII、ISO-8859-1、UTF-8、UTF-16 等。不同的字符集支持不同的字符范围和特殊字符。

2.字符编码

字符编码(Character Encoding)是将字符集中的字符编码为字节序列的规则。它定义了如何将字符转换为字节,以及如何从字节中还原出原始的字符。常见的字符编码包括 ASCII、UTF-8、UTF-16、GBK、ISO-8859-1 等。
UTF-8 是最常用的字符编码之一,它是一种可变长度的编码方式,能够表示 Unicode 字符集中的所有字符。它使用 1 到 4 个字节来表示不同的字符,对于英文字符使用 1 个字节表示,而对于中文等非英文字符使用多个字节表示。

正确选择和设置字符集和字符编码非常重要,因为它们直接影响着文本数据在存储、传输和处理过程中的正确性和准确性。在数据库连接、文件读写、网络通信等场景中,需要根据实际需求来选择和设置适当的字符集和字符编码,以确保数据的正确传输和处理。

了解了字符集和字符编码,有没有恍然大悟的感觉呢?接下来我们可以了解一下Unicode字符集。

Unicode 是一个字符集(Character Set),它定义了世界上几乎所有的字符和符号的唯一编码标准。Unicode 旨在为每个字符分配一个独特的数字代码,以便在计算机系统中进行统一的表示和处理。

Unicode 定义了超过 13 万个字符,包括各种语言的文字、标点符号、数学符号、图形符号等。它涵盖了全球范围内几乎所有现代和古代的文字系统,并提供了对特殊符号和表情符号的支持。

Unicode 并不关注具体的字符编码方式,它只是为字符分配了唯一的代码点,即每个字符对应的数字值。常见的字符编码方式如 UTF-8、UTF-16、UTF-32 等,它们根据 Unicode 的定义将字符编码为字节序列。

因此,可以说 Unicode 是一个字符集,而 UTF-8、UTF-16 等是字符编码方式。字符编码方式是为了在计算机存储和传输过程中将 Unicode 字符编码为实际的字节序列,以满足计算机系统的需求。

最后,我们需要了解一下在数据库中使用字符集和字符编码的搭配规则,这和实际应用是分不开的。

这里以mysql为例,只介绍一些最基础的规则,大家有兴趣的可以评论区留言讨论或者自己深入学习。

3.连接mysql数据库使用的字符集和字符编码

MySQL中支持多种字符集,包括utf8(实际上是一种变形,有一个bug)、utf8mb4、gbk、latin、cp850等,其中utf8mb4能够支持完整的Unicode字符集。在 MySQL 5.5.3 之前的版本中,MySQL使用utf8编码中只支持基本的Unicode字符,不支持辅助字符(Supplementary Characters)。因此,我们在 MySQL 应用 UTF-8 编码时,必须使用 utf8mb4 字符集(Mb4代表可以使用4个字节缩写“most bytes”)。

------The End------
如果这个分享对您有用,或者您希望持续关注,也可以扫描下方微信订阅号二维码:
在这里插入图片描述

  • 11
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

北国137

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值