字符集详解
admin
2024-03-14 22:55:25
0

目录

一、字符集的介绍

二、字符集的分类

(1)ASCII字符集

(2)GBK字符集

(3)Unicode字符集


一、字符集的介绍

字符集,什么是字符集呢?相信大家应该会遇到乱码的情况吧(乱码就是打开一个文件,文件中的内容与写进去的内容不一致,出现的是一些看不懂的符号)。那为什么会出现乱码呢?出现乱码的原因就是字符集。这里我们可以将字符集比作是一个字典,而在计算机中,任意的数据都是以二进制的形式来存储的的,我们想要知道一个二进制数表达的是什么数据,就需要查询该二进制数在字符集(也就是字典)上所表示的数据,而乱码出现的原因就是查询的字典不同,试问两个不同的字典如新华字典和英文单词表查询他们得到的数据会是一样的吗?这就是乱码出现的根本原因。而字符集我们也就可以将它理解成是计算机二进制数据的字典。

字节是计算机最小的存储单元,一个字节有八位二进制数。

二、字符集的分类

(1)ASCII字符集

ASCII字符集只是对于英文有着编码规则,对于汉字等其他语言并没有。

如:a
查询ASCII表,得到值97,97转换成二进制数是110 0001,前面说到了字节是计算机最小的存储单元,而一个字节是八位二进制数,
ASCII编码规则:前面补0,补齐八位。所以编码得到0110 0001,后面开始解码,得到97,查询ASCII表,得到a。

(2)GBK字符集

GB2312字符集是我国发布的收录了简体中文的字符集,后来台湾也发布了BIG5字符集,台湾作为我们祖国的一部分,一个国家出现了两个字符集,
那我国后来就又发不了GBK字符集,包含了国家标准GB13000-1中的全部中日韩汉字,和BIG5编码中的所有汉字,windows系统默认使用的就是GBK。
系统显示:ANSI

GBK
英文的存储规则:
a  查询GBK  得到97转换成二进制 0110 0001
英文用一个字节存储,完全兼容ASCII,补齐八位,不足八位前面补0汉字的存储规则汉 查询GBK 得到47802转换 10111010 10111010
汉字用;两个字节存储(2的16次方个汉字应该够用了吧),高位字节(左边的)二进制一定以1开头,转换成十进制之后是一个负数

(3)Unicode字符集

不同地区的字符集出现了不同的编码方式,也就出现了所谓的乱码,这个时候就需要统一的字符集了,万国码Unicode字符集
也就出现了。Unicode字符集:国际标准字符集,它将世界各种语言的每个字符定义一个唯一的编码,以满足跨语言、跨平台的
文本信息转换。

 

Unicode的存储规则与GBK是差不多的
这里Unicode一般是使用UTF-8编码规则
说到这个其实还有UTF-32编码规则(32个比特位,固定使用四个字节保存)一直四个字节对于中文英文太浪费空间了
UTF-16编码规则(用2到4个字节保存)对于使用一个字节的英文来说太浪费空间了。
所以Unicode使用的编码规则一般是UTF-8(用1到4个字节保存)(注意哦简体中文用三个字节哦)
UTF-8编码规则:
0xxxxxxxx (ASCII)
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx如汉字:汉 查询Unicode是27721转换成二进制 01101100 01001001 UTF-8编码变成:11100110 10110001 10001001

这里一定要注意UTF-8不是一个字符集,它只是Unicode字符集的一种编码方式,千万不要搞错了

windows系统默认使用的是GBK

相关内容

热门资讯

【MySQL】锁 锁 文章目录锁全局锁表级锁表锁元数据锁(MDL)意向锁AUTO-INC锁...
【内网安全】 隧道搭建穿透上线... 文章目录内网穿透-Ngrok-入门-上线1、服务端配置:2、客户端连接服务端ÿ...
GCN的几种模型复现笔记 引言 本篇笔记紧接上文,主要是上一篇看写了快2w字,再去接入代码感觉有点...
数据分页展示逻辑 import java.util.Arrays;import java.util.List;impo...
Redis为什么选择单线程?R... 目录专栏导读一、Redis版本迭代二、Redis4.0之前为什么一直采用单线程?三、R...
【已解决】ERROR: Cou... 正确指令: pip install pyyaml
关于测试,我发现了哪些新大陆 关于测试 平常也只是听说过一些关于测试的术语,但并没有使用过测试工具。偶然看到编程老师...
Lock 接口解读 前置知识点Synchronized synchronized 是 Java 中的关键字,...
Win7 专业版安装中文包、汉... 参考资料:http://www.metsky.com/archives/350.htm...
3 ROS1通讯编程提高(1) 3 ROS1通讯编程提高3.1 使用VS Code编译ROS13.1.1 VS Code的安装和配置...
大模型未来趋势 大模型是人工智能领域的重要发展趋势之一,未来有着广阔的应用前景和发展空间。以下是大模型未来的趋势和展...
python实战应用讲解-【n... 目录 如何在Python中计算残余的平方和 方法1:使用其Base公式 方法2:使用statsmod...
学习u-boot 需要了解的m... 一、常用函数 1. origin 函数 origin 函数的返回值就是变量来源。使用格式如下...
常用python爬虫库介绍与简... 通用 urllib -网络库(stdlib)。 requests -网络库。 grab – 网络库&...
药品批准文号查询|药融云-中国... 药品批文是国家食品药品监督管理局(NMPA)对药品的审评和批准的证明文件...
【2023-03-22】SRS... 【2023-03-22】SRS推流搭配FFmpeg实现目标检测 说明: 外侧测试使用SRS播放器测...
有限元三角形单元的等效节点力 文章目录前言一、重新复习一下有限元三角形单元的理论1、三角形单元的形函数(Nÿ...
初级算法-哈希表 主要记录算法和数据结构学习笔记,新的一年更上一层楼! 初级算法-哈希表...
进程间通信【Linux】 1. 进程间通信 1.1 什么是进程间通信 在 Linux 系统中,进程间通信...
【Docker】P3 Dock... Docker数据卷、宿主机与挂载数据卷的概念及作用挂载宿主机配置数据卷挂载操作示例一个容器挂载多个目...