快速理解ASCII、GBK、Unicode、UTF-8、ANSI

文章大部分内容来源于非官方说明,且无法用逻辑推理出结果,准确性仅供参考。

ASCII

计算机是老外发明的,想让计算机实现更多的功能,必然少不了把常用的字母和符号存进去,甚至包含一些特殊符号,于是ASCII码,American Standard Code for Information Interchange就这样诞生了,它一共256(原先128个,后期又新增到256个)个字符,2^8=256,所以刚好一个字节可以存储的下。

GBK

随着计算机流入中国,ASCII无法满足汉字的需求,于是GBK2312诞生了,但是发现GB2312不够强大,于是GBK诞生了,它包含了 GB2312 字符集中的全部 6763 个汉字,以及其它汉字、拉丁字母、符号和其他特殊字符。因此,总体而言,GBK 编码共包含了21886 个字符,由于2^16>>211886,所以用两个字节存储足够了,这就是一个GBK字符编码的汉字,占2个字节大小的原因,但英文字符仍旧占1个字节。

Unicode

每个国家都搞自己的编码,那么不同国家之间的信息传递就会有乱码的情况,unicode就是为了解决这个问题的,起初是utf-32,蕴含着有容乃大的思想,任何字符都占用4个字节,但是很多人觉得造成了空间浪费,流量传输浪费问题。

UTF-8

为了空间浪费的问题,UTF-8诞生了,utf-8采用的是可变长度,也就是英文字符1个字节(兼容了ASCII),汉字3个字节,表情符号4个字节来表示。这会诞生一个问题,解析软件怎么区分需要解析1-4是几个字节的,那么就制定了一个规范:

  • 占用1个字节的字符:二进制编码以0开头。
  • 占用2个字节的字符:第一个字节以110开头,第二个字节以10开头。
  • 占用3个字节的字符:第一个字节以1110开头,第二个字节以10开头,第三个字节以10开头。
  • 占用4个字节的字符:第一个字节以11110开头,第二个字节以10开头,第三个字节以10开头,第四个字节以10开头。

ANSI

这个在Windows记事本下有这个,ANSI 编码是一种由美国国家标准协会(ANSI)制定的编码标准,主要用于英语和其他西欧语言的编码。实际上,ANSI编码是一个众多编码的集合,它并没有明确的定义,不同程序和系统对其理解和实现也不完全相同。

UTF-16

UTF-16 是一种采用 16 位编码的 Unicode 字符编码方式,它是 Unicode 标准的一部分,可以表示全部的 Unicode 字符集范围(而 UTF-8 和 UTF-7 只能部分表示,所以存在兼容性问题)。
虽然 UTF-16 具有可移植性和编码效率高等优点,但是由于它使用的是 16 位编码,因此会占用更多的存储空间,而且在零散的文本处理和传输过程中,需要更多的字节数。。因为和UTF-32一样因存储问题,而没有成为主流。

UTF-16LE

UTF-16和UTF-16LE都是Unicode字符编码的实现方式,其中的“LE”指的是“Little Endian”,表示低字节顺序,而没有“LE”则默认为高字节序。
UTF-16编码采用16位(两个字节)来表示一个Unicode字符,因此每个字符的存储需要占用两个字节,从而可能导致存储和传输效率低下的问题。UTF-16还支持BOM(Byte Order Mark)来标识字节序列的顺序。
UTF-16LE也是UTF-16的一种变体,它采用Little Endian字节序来存储每个字符的两个字节。这种字节序在Intel和AMD等主流计算机中应用广泛。与UTF-16BE(Big Endian)相比,UTF-16LE在内存存储和网络传输时占用的字节顺序更经济,因此它通常用于Windows及其他操作系统和软件中。

GBK与GB2312

GBK是GB2312的升级版,GBK编码在GB2312的基础上又增加了14240个汉字、生僻字等。按照GB2312的编码方式,两个字节已经不够用了,这时候GBK编码制定了新标准:只要出现一个大于127(0x7F)的字节,那么这个字节和它后面的一个字节共两个字节表示一个汉字,这样做的好处是可以同时兼容ASCII和GB2312。

Big5

Big5,又称为大五码或五大码,是使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。
中文码分为内码及交换码两类,Big5属中文内码,知名的中文交换码有CCCII、CNS11643。
Big5虽普及于台湾、香港与澳门等繁体中文通行区,但长期以来并非当地的国家/地区标准或官方标准,而只是业界标准。
Big5码是一套双字节字符集,使用了双八码存储方法,以两个字节来安放一个字。第一个字节称为“高位字节”,第二个字节称为“低位字节”。

MySQL中utf8与utf8mb4

utf8:在早期的 MySQL 版本中,utf8 是用来存储 Unicode 字符的字符集,但它只支持最多三个字节的字符编码范围,无法存储表情符号,因此不是真正的utf-8。
utf8mb4:为了解决 utf8 的不足而引入了 utf8mb4 字符集。utf8mb4 支持最多四个字节的字符编码范围,可以表示更广泛的 Unicode 字符,包括一些特殊表情符号(如 Emoji)等,所以推荐使用

MySQL中utf8mb4_general_ci与utf8mb4_unicode_ci

ci表示不区分大小写。
utf8mb4_general_ci 是一种基于字符串二进制的简单排序规则,它不会考虑字符的语言或文化背景,只会判断字符的字节值大小。比如它认为 ‘a’ 和 ‘A’ 是相等的,认为 ‘ä’ 和 ‘a’ 也是相等的。
utf8mb4_unicode_ci 也支持 Unicode 编码,但排序规则更加智能化,把字符进行了分组,分别考虑了字符的语言、文化背景和排序规则。比如它认为 ‘a’ 与 ‘A’ 不同,认为 ‘ä’ 与 ‘a’ 不同,但它会把类似于 ‘ä’、‘ö’、‘ü’ 这样的字符分到一组,并认为它们相等。
综上所述,如果需要对字符的语言、文化背景和排序规则进行精确的排序和比较,建议使用 utf8mb4_unicode_ci。

latin-1、latin-2

用于表示拉丁字母字符和其他特殊字符。它最初是为了表示欧洲语言而设计的,但后来也被广泛用于其他地区和语言。
其中,最常见的 Latin 编码标准有 Latin-1(ISO-8859-1)和 Latin-2(ISO-8859-2)。
Latin-1 编码涵盖了西欧语言(如英语、法语、德语、西班牙语等)中的基本拉丁字母字符以及一些特殊字符和符号。
Latin-2 编码扩展了 Latin-1,覆盖了中欧语言(如捷克语、波兰语、匈牙利语等)中的字符。

BOM

BOM(Byte Order Mark)是一个特殊的字符序列,用于表示文本数据的字节顺序(即大端序或小端序)。它通常作为文本文件的开头几个字节出现。
BOM 在处理文本文件时具有重要作用,它可以帮助确定文本数据的正确编码方式,从而正确解析和显示文本内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/586005.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

剑指 Offer(第2版)面试题 60:n 个骰子的点数

剑指 Offer(第2版)面试题 60:n 个骰子的点数 剑指 Offer(第2版)面试题 60:n 个骰子的点数解法 1:递归解法 2:动态规划 剑指 Offer(第2版)面试题 60&#xff1…

共享单车之数据可视化

文章目录 第1关:绘制地图第2关:绘制流量最高的五条线路的路程图 第1关:绘制地图 任务描述 本关任务:使用JSP在百度地图上绘制一条共享单车起始路程。 相关知识 为了完成本关任务,你需要掌握: 如何创建地…

进阶学习——Linux系统服务器硬件认识与RAID磁盘

目录 一、服务器知识补充 1.硬件 2.服务器常见故障 二、认识RAID 1.什么是RAID 2.RAID的优点 3.RAID的实现方式 三、RAID磁盘陈列 1.RAID 0 磁盘陈列介绍——RAID 0 2.RAID 1 磁盘陈列介绍——RAID 1 3.RAID 5 磁盘陈列介绍——RAID 5 4.RAID 6 磁盘陈列介绍——RA…

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间

vr体验馆用什么软件计时计费,如遇到停电软件程序如何恢复时间 一、软件程序问答 如下图,软件以 佳易王vr体验馆计时计费软件V17.9为例说明 1、软件如何计时间? 点击相应编号的开始计时按钮即可 2、遇到停电再打开软件时间可以恢复吗&…

【开源】基于Vue+SpringBoot的公司货物订单管理系统

目录 一、摘要1.1 项目介绍1.2 项目录屏 二、功能模块2.1 客户管理模块2.2 商品维护模块2.3 供应商管理模块2.4 订单管理模块 三、系统展示四、核心代码4.1 查询供应商信息4.2 新增商品信息4.3 查询客户信息4.4 新增订单信息4.5 添加跟进子订单 五、免责说明 一、摘要 1.1 项目…

Redis经典五大类型源码及底层实现(一)

👏作者简介:大家好,我是爱吃芝士的土豆倪,24届校招生Java选手,很高兴认识大家📕系列专栏:Spring源码、JUC源码、Kafka原理、分布式技术原理、数据库技术🔥如果感觉博主的文章还不错的…

LeetCode——2660. 保龄球游戏的获胜者

通过万岁!!! 题目比较简单,就是给你两个数组,大小为n,分别表示n次投掷保龄球的得分。然后让你按照某种规则计算出最后的总得分,从而判断胜负。计算的规则就是如果出现了10分,那么接…

Linux CPU 数据 Metrics 指标解读

过去从未仔细了解过使用 top 和 htop 等命令时显式的CPU信息,本文我们详解解读和标注一下各个数据项的含义,同时和 Ganglia 显式的数据做一个映射。开始前介绍一个小知识,很多查看CPU的命令行工具都是 cat /proc/stat 里的数据,所…

Spring-6-事务管理

事务是构建可靠企业级应用程序的最关键部分之一。 最常见的事务类型是数据库操作。 在典型的数据库更新操作中,首先数据库事务开始,然后数据被更新,最后提交或回滚事务(根据数据库操作的结果而定)。但是,在很多情况下&#xff0…

Dockerfile文件介绍

0 Preface/Foreword 0.1 Docker docker用来自制镜像。 1 Introduction 1.1 Dockerfile Dockerfile是用于定义Docker镜像的构建过程,它包含一系列的指令用于安装 软件包、配置环境等操作。 Dockerfile文件的格式如下: FROM base_image RUN apt-get up…

java中的缓冲类HeapByteBuffer和DirectByteBuffer的区别

使用之前写的文章里的例子 https://blog.csdn.net/zlpzlpzyd/article/details/135292683 HeapByteBuffer import java.io.File; import java.io.FileInputStream; import java.io.Serializable; import java.nio.ByteBuffer; import java.nio.channels.FileChannel;public clas…

【hcie-cloud】【12】华为云Stack故障处理【故障处理通用处理原则、常见华为云Stack故障处理(计算域故障场景)】【上】

文章目录 前言故障处理通用处理原则故障处理流程故障信息收集及故障范围、类型识别ManageOne运维面收集告警信息AutoOps工具故障场景信息收集AutoOps工具自动化采集HCS信息 (1)AutoOps工具自动化采集HCS信息 (2)故障初期定位方向故障恢复例行维护讨论: 哪一环比较重要&#xff…

SQL面试题挑战08:补全缺失日的月销售累计

目录 问题:SQL解决:补充:repeat函数和space函数 问题: 现有一张员工的销售记录表,表样式如下。现在需要统计每个员工在2023年10月份,截止到每天的月累计销售额。注意:存在有的员工在某几天是没…

关于表格太大了jupyter无法单次处理的问题

记录下自己的心路历程…耗时耗精力 我用的数据库单个表格就很大,一个表格有30多G,jupyter无法处理这么大的表格,会直接把电脑的进程全部结束掉,结束掉要是能运行成功倒也行啊,然鹅…给我报错说处理不了,罢工…

【SpringCloud】从实际业务问题出发去分析Eureka-Server端源码

文章目录 前言1.EnableEurekaServer2.初始化缓存3.jersey应用程序构建3.1注册jeseryFilter3.2构建JerseyApplication 4.处理注册请求5.registry() 前言 前段时间遇到了一个业务问题就是k8s滚动发布Eureka微服务的过程中接口会有很多告警,当时…

vue路由传参

声明式导航传参 1 动态路由传参 路由规则path -> /article/:aid 导航链接 <router-link to"/article/1">查看第一篇文章</router-link> 组件获取参数: this.$route.params.aid 2 查询参数传参数 /路径?参数1值&参数2值 路由规则path ->…

next.js 开发网站的hello world

本文介绍建立一个简单的next.js 工程&#xff0c;以及简单修改。然后也简单说了2种路由方式的选择。 开始next.js工程前需要node.js &#xff0c; 还需要编辑器&#xff0c;我这里选择的是visual code。如果没有安装node.js 请参考下&#xff1a; visual code 下的node.js的he…

PathWave Device Modeling (IC-CAP) 建模系统——IC-CAP概述

建模系统 PathWave Device Modeling&#xff08;IC-CAP&#xff09;建模系统用于测量半导体器件并分析器件的电路建模特性以及分析所得数据。 要使用PathWave Device Modeling&#xff08;IC-CAP&#xff09;&#xff0c;您需要以下设置&#xff1a; 一台工作站执行直流、电…

linux端数据库管理工具推荐DBeaver

我的是 Ubuntu 系统安装步骤&#xff1a; 下载 DBeaver&#xff1a; 前往 DBeaver 的官方网站&#xff0c;选择适用于 Linux 的版本&#xff08;通常是以压缩包形式提供&#xff09;。 解压下载的文件&#xff1a; 打开终端&#xff0c;导航到下载的压缩文件所在的目录&#x…

今年近三万人报考北大研究生,最高学费80多万!

全国硕士研究生招生考试已经接近尾声&#xff0c;今年总共有近3万名考生报考北京大学硕士研究生。而北大计划招生的研究生是7349人&#xff0c;按这个比例计算的话相当于4:1&#xff0c;也就是平均 4 个人当中会有一个人被录取&#xff0c;我感觉这比高考容易多了。 2023年北大…