当前位置: 首页 > news >正文

在线计算机字符编码查询,字符编码

为什么需要字符编码

先简单说明字符编码相关的几个概念。

这里的描述可能不一定准确,只是为了简化理解。

如有不对,欢迎指正。

字符

可以表达意图的汉字、英文字母、阿拉伯数字等文字符号。也就是书面语言的基本组成单位。

为什么需要编码

计算机只能识别和存储 0 1 。要在计算机中表示字符,就需要将字符和一个数字对应(数字可以使用二进制表示时只需要用到 0 和 1.)。

在说字符编码之前,先说一下字符集。

字符集

字符集是特定字符的集合,同时给每个字符分配了一个唯一的 ID(学名为码位 / 码点 / Code Point)来表示字符。

需要注意,这里还没有涉及到计算机层面,仅仅是理论层面。

也就是将一个特定的字符集合,映射到了一个特定的 ID 集合——用一个 ID 来表示一个字符。

不同的字符集所包含的字符不同。

不同的字符集有不同的对应关系。

不同字符集,可能部分字符的对应关系一样,部分字符的对应关系不一样。

字符编码

在计算机中如何表示一个字符,也就是字符集中的「码点」。

通常就是直接用「码点」的二进制来表示,也就是这种情况下字符编码和字符集是等价的。

也存在两者不同的情况,后面会说明。

某种程度上可以说,字符集是一种协议(规定了如何用一个ID来表示字符),而字符编码是对字符集的一种实现(实际上在计算机中如何存储字符)。

简单编码系统

在简单编码系统中,没有严格区分字符集和字符编码,所以字符集和字符编码的概念是等价的。

ASCII 编码就是最常用的简单编码。

当我们说 ASCII 编码的时候,实际上和 ASCII 字符集都是在描述同一个东西:使用 7 bit 的 128 个数字来表英文大小写字母、数字、控制字符等字符。

为了表示中文,也出现了 GBK 相关的编码,他们也是简单编码,也就是字符集和字符编码是同一个概念。

现代编码系统

世界上存在大量的文字,也存在了大量的字符集/字符编码方案。

随着交流的加深,文字需要在不同计算机之间传输,也就是不同字符编码之间传输转换,很容易出现“乱码”的现象。

为了解决这个问题,Unicode (统一码)应运而生。

Unicode 是一个字符集,规定了如何用一个 ID 来表示一个字符。与其他字符集不同的是,Unicode 要表示所有的字符,以便世界各地的人民都能用来表示自己的文字。

Unicode 定义了每个字符与 ID 的对应关系。由于字符很多,ID 的范围也很大,如果计算机直接用 ID 的二进制来表示,就会占据大量的空间。

比如 a 的 Unicode 编码是 \u0061 , 中 的 Unicode 编码是 \u4e2d 。对于 a 等英文字母来说,他们的 Unicode 编码的高位都是 0 ,如果使用 2 个字节存储下来,就会浪费很多空间。而对于 中 等中文字符来说,如果只用 1 个字节是存储不了的。甚至有些字符需要使用 3 个、4 个字节才能存储。

因此出现了多个变长的编码方式,不同的字符使用不同长度的字节来表示,从而达到既能覆盖 Unicode 字符集的范围,又能减小存储空间。其中最为突出的就是 UTF-8。另一方面,变长字符编码,也带来了一个问题,不能快速定位第 X 个字符的位置,必须从头开始遍历字节序列才能确定第 X 个字符的位置。

简单来说 Unicode 是一个字符集,UTF-8、UTF-16、UTF-32 等是字符编码。

Ref

The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets www.joelonsoftware.com/2003/10/08/…

对于字符编码,程序员的话应该了解它的哪些方面? - 科言君的回答 - 知乎

相关文章:

  • 举例说明应用计算机技术求解问题的步骤,下面举例说明UGFEA的应用-计算机工程学院.doc...
  • html邮件会不会是病毒,邮件病毒不得不防 去除来信病毒有另法
  • ios html css,IOS 7 - css - html height - 100% = 692px
  • 计算机专业i英语,计算机专业英语词汇
  • 计算机网络网线制作教案,制作网线教案.doc
  • 乡村少年宫计算机学科教案,乡村少年宫活动信息技术教案.doc
  • 计算机在建筑节能领域的作用,论文计算机模拟技术在建筑节能方面的应用.doc...
  • 重庆理工计算机考研分数线,2020重庆理工大学考研复试分数线已公布
  • 计算机操作员五级模似试题,计算机操作员模拟试题基础部分.doc
  • 关于计算机航天生物的想像作文,航天精神作文500字
  • 针对世界上第一台计算机的缺点,小学生信息学练习计算机基础.doc
  • 计算机大专当兵吃香吗,大专学生参军有这么多好处,现在已经有好多人后悔没参军...
  • curl怎么验证服务器证书,使用s_client但不是curl的客户端证书访问服务...
  • 服务器安装版u盘如何制作,U盘怎么安装原版Windows server 2016?
  • git自动部署代码到服务器windows,Jenkins-在windows上配置自动化部署(Jenkins+Gitlab+IIS)...
  • Angular 响应式表单 基础例子
  • Babel配置的不完全指南
  • input实现文字超出省略号功能
  • javascript从右向左截取指定位数字符的3种方法
  • Java基本数据类型之Number
  • MySQL数据库运维之数据恢复
  • PAT A1050
  • Redis中的lru算法实现
  • Shell编程
  • Spring Cloud Feign的两种使用姿势
  • Vue官网教程学习过程中值得记录的一些事情
  • 海量大数据大屏分析展示一步到位:DataWorks数据服务+MaxCompute Lightning对接DataV最佳实践...
  • 机器学习学习笔记一
  • 计算机在识别图像时“看到”了什么?
  • 开发基于以太坊智能合约的DApp
  • 力扣(LeetCode)965
  • 聊一聊前端的监控
  • 普通函数和构造函数的区别
  • 怎样选择前端框架
  • 3月27日云栖精选夜读 | 从 “城市大脑”实践,瞭望未来城市源起 ...
  • Java数据解析之JSON
  • ​一帧图像的Android之旅 :应用的首个绘制请求
  • #HarmonyOS:基础语法
  • #pragam once 和 #ifndef 预编译头
  • (12)目标检测_SSD基于pytorch搭建代码
  • (4)logging(日志模块)
  • (done) NLP “bag-of-words“ 方法 (带有二元分类和多元分类两个例子)词袋模型、BoW
  • (超详细)2-YOLOV5改进-添加SimAM注意力机制
  • (附源码)小程序 交通违法举报系统 毕业设计 242045
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (转)ObjectiveC 深浅拷贝学习
  • (转)Unity3DUnity3D在android下调试
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .net开发引用程序集提示没有强名称的解决办法
  • .net实现头像缩放截取功能 -----转载自accp教程网
  • .NET使用存储过程实现对数据库的增删改查
  • @Bean注解详解
  • @EnableWebMvc介绍和使用详细demo
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • [ 云计算 | Azure 实践 ] 在 Azure 门户中创建 VM 虚拟机并进行验证