排队取快递这会我理清楚了各种编码集

简介: 排队取快递这会我理清楚了各种编码集

前言絮絮念


提到字符集,大多数小伙伴可能多会想起自己曾经在学编程的时候,要么要么别人的代码,或者搞网页开发的,浏览器一跑,啊这,怎么全是乱码...


字节和字符的区分


一、字节


在计算机中,字节是用来计量计算机的存储容量的一个单位。英文是Byte。也就是常见的存储单位MB、GB后的这个大写的"B"。计算机汇总存储信息的最小单位是位(bit),通俗来说了,计算机的一个'0'或者一个'1'就作一位。 它们之间的关系是这种的,

八位 算作 一字节: 1Byte = 8 bit


二、字符


字符是指计算机中使用的文字和符号,比如“1、2、3、A、B、C、~!·#¥%…*()+”等等都是称为字符。


ASCII码


ASCII码应该是四个编码中最傻白甜的了,也应该是科班的同学接触的最多的了吧,大一的C语言作业应该都有字 符 a 字符a字符a转成字 符 A 字符A字符A的身影吧。

ASCII的全名是American Standard Code for Information Interchange, 中文翻译过来是美国信息交换标准码


ASCII码中,一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间。

ASCII码可以表示的字符个数是128个字符。

对于ASCII码而言,印象最深的应该是ASCII码表了。

几个比较重要的是记住就好:0的ASCII码是48;A的ASCII码是65;a的ASCII码是97。其

他的1、b、B呀是逐渐加1去递推就好。然后ASCII码就没有其他比较重要的了吧(狗头保命)。微信图片_20221018160313.png

ANSI码


ANSI码是对ASCII码的一种拓展。因为ASCII码表示的128个字符是不能满足咱们的需求的。

ANSI编码用0x00~0x7f (即十进制下的0到127)范围的1 个字节来表示 1 个英文字符,超出一个字节的 0x80~0xFFFF 范围来表示其他语言的其他字符。也就是说,ANSI码仅在前128(0-127)个与ASCII码相同,之后的字符全是某个国家语言的所有字符。

ANSI编码其实包括很多编码:中国制定了GB2312编码,用来把中文编进去另外,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准。受制于当时的条件,不同语言之间的ANSI码之间不能互相转换,这就会导致在多语言混合的文本中会有乱码。


Unicode编码


为了解决不同国家ANSI编码的冲突问题,Unicode编码因此而生——如果全世界每一个符号都给予一个独一无二的编码,那么乱码问题就会消失。


Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(如果要用到非常偏僻的字符,就需要4个字节)。现代操作系统和大多数编程语言都直接支持Unicode。

但是问题在于,原本只是需要用一个字节存储的英文字母在Unicode里面必须存两个字节(规则就是在原来英文字母对应ASCII码前面补0),这就产生了浪费。那么有没有一种既能消除乱码,又能避免浪费的编码方式,此时,咱们可爱的UTF-8就出来了。


UTF-8编码


UTF-8是一种变长的编码方式,它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度

当字符在ASCII码的范围时,就用一个字节表示,保留了ASCII字符一个字节的编码做为它的一部分,如此一来UTF-8编码也可以是为视为一种对ASCII码的拓展。

比较有趣的是:

unicode编码中一个中文字符占2个字节,而UTF-8一个中文字符占3个字节。从unicode到uft-8并不是直接的对应,而是要过一些算法和规则来转换


小总结


在计算机内存中,统一使用Unicode编码,当需要保存到硬盘或者需要传输的时候,就转换为UTF-8编码。

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件


相关文章
|
机器学习/深度学习 数据采集 算法
【MATLAB】BiGRU神经网络回归预测算法
【MATLAB】BiGRU神经网络回归预测算法
1070 0
|
7月前
|
机器学习/深度学习 人工智能 计算机视觉
AI图像质感还原堪比专业摄影!Miracle F1:美图WHEE全新AI图像生成模型,支持超写实与多风格生成
美图WHEE推出的Miracle F1采用扩散模型技术,通过精准语义理解和多风格生成能力,可产出具有真实光影质感的专业级图像作品。
324 5
AI图像质感还原堪比专业摄影!Miracle F1:美图WHEE全新AI图像生成模型,支持超写实与多风格生成
|
Prometheus 监控 安全
SpringBoot Actuator未授权访问漏洞的解决方法
SpringBoot Actuator未授权访问漏洞的解决方法Actuator 是 SpringBoot 提供的用来对应用系统进行自省和监控的功能模块,借助于 Actuator 开发者可以很方便地对应用系统某些监控指标进行查看、统计等。
30375 0
|
10月前
|
API 开发者 Python
Pygame Zero(pgzrun)详解(简介、使用方法、坐标系、目录结构、语法参数、安装、实例解释)
Pygame Zero(pgzrun)详解(简介、使用方法、坐标系、目录结构、语法参数、安装、实例解释)
1580 17
ly~
|
存储 Oracle 关系型数据库
数据库的优点和缺点分别是什么?
### 数据库的优点与缺点 数据库具有高数据共享性,允许多用户和多应用同时访问,提升信息流通效率。其数据一致性通过约束机制和事务管理保障,确保数据完整无误。数据库具备强数据独立性,改变存储结构或逻辑结构对应用影响小。此外,用户权限管理和数据加密提升了数据安全性。 然而,数据库也存在成本高的问题,包括软件购买与维护费用及高性能硬件需求。大规模数据处理可能导致性能瓶颈,尤其是在高并发场景下。数据迁移复杂,尤其是不同数据库系统间或版本升级时,需处理数据结构和语法差异。
ly~
1340 2
|
存储 iOS开发 开发者
iOS app上架app store流程详解
iOS app上架app store流程详解
|
缓存 监控 小程序
基于Spring Boot+VUE Java小程序商城项目(附源码),接私活利器
平台简介 基于RuoYi-Vue二开,集成了MybatisPlus、Avue、WxJava SDK MIT开源的微信二开利器,放心使用 专业的微信管理框架并加入小程序商城,是用来学习和实际项目的不二选择 前端采用Vue、Element UI、Avue。 后端采用Spring Boot、Spring Security、Redis & Jwt、Mybatis Plus、WxJava。
|
应用服务中间件 nginx
Nginx服务器的反向代理proxy_pass配置方法讲解
 Nginx服务器的反向代理proxy_pass配置方法讲解 这篇文章主要介绍了Nginx服务器的反向代理proxy_pass配置方法讲解,包括经常被提到的url的/问题的相关说明,需要的朋友可以参考下 就普...
5584 0
|
Linux
【Linux命令200例】find用来查找文件和目录,不可错过的15个例子
在Linux系统中,find命令非常强大,它可以用来查找文件和目录,并对查找到的结果进行各种操作。find命令是一个基于文件查找的工具,可以按照文件名、文件类型、文件大小、文件权限等条件进行高度灵活的查找。本文将详细介绍find命令的用法,包括常用参数的解释和示例。
1227 0
|
SQL 存储 NoSQL
数据库的类型(TP、AP、NoSQL、工具)(一)
数据库的类型(TP、AP、NoSQL、工具)(一)
2926 0