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

字符编码(三)

上期:

字符编码(二)-CSDN博客

Unicode 字符集

Unicode字符集是一个国际标准,旨在为世界上所有的书写系统和符号提供一个统一的编码方案。它不仅涵盖了现代语言中的字符,还包括了历史上的文字、数学符号、技术符号、表情符号等,几乎覆盖了人类历史上所有已知的字符。通过为每个字符分配一个唯一的编号(称为代码点或码位),Unicode确保了不同平台、程序和语言之间的互操作性。

Unicode官方网址

Unicode – The World Standard for Text and Emoji

代码图

Unicode 16.0 字符代码表

Unicode的发展背景

在Unicode出现之前,计算机行业存在着数百种不同的编码标准,每种编码只能涵盖有限数量的语言字符,并且这些编码之间可能存在冲突。例如,两个不同的编码可能使用相同的数字表示不同的字符,或者用不同的数字表示同一个字符。这种不一致性导致了数据交换时的问题,尤其是在跨国界或跨文化的环境中。

为了克服这些问题,Unicode联盟(The Unicode Consortium)成立,其目标是创建一个包含全球所有字符的单一编码标准。自1991年发布第一个版本以来,Unicode已经经历了多次更新,不断扩展以纳入更多的字符和支持更多的语言。

Unicode的基本概念

  • 抽象字符:Unicode定义了一个抽象字符的概念,即字符本身与其任何特定的视觉表现形式无关。这意味着即使同一个字符在不同的字体中有不同的外观,它们仍然被认为是同一个字符。

  • 代码点:每个抽象字符都被赋予了一个独一无二的标识符——代码点(Code Point)。代码点通常表示为U+后面跟着四位到六位的十六进制数,如大写字母A的代码点是U+0041

  • 平面(Plane)与区块(Block):Unicode将代码点划分为多个平面,其中基本多语言平面(Basic Multilingual Plane, BMP)是最常用的,包含了从U+0000U+FFFF的65,536个位置。除此之外还有16个辅助平面,用于容纳更多的字符。每个平面又被细分为若干个区块,每个区块包含一组相关的字符。

Unicode的编码形式

虽然Unicode定义了一个庞大的字符集,但它并没有规定具体的字节表示方法。为了能够在实际的计算机系统中传输和存储这些字符,Unicode提供了几种不同的编码形式:

  • UTF-8:这是一种变长编码方式,可以使用1到4个字节来表示不同的字符。UTF-8的一个重要特点是它与ASCII兼容,对于ASCII范围内的字符(U+0000U+007F),UTF-8直接使用单字节表示,这使得它成为互联网上传输文本数据的事实标准。

  • UTF-16:该编码方式既可以是定长也可以是变长的。对于BMP内的字符,UTF-16使用两个字节表示;而对于超出BMP的字符,则需要四个字节(一对代理项)。UTF-16主要用于Windows操作系统和其他一些环境。

  • UTF-32:这是一种固定长度的编码方式,每个字符都使用四个字节表示。尽管简单直接,但由于占用空间较大,因此应用不如前两者广泛。

Unicode与其他编码的关系

随着Unicode标准的普及,越来越多的传统编码逐渐被取代。然而,在某些情况下,旧有的编码仍然会被使用,特别是在那些对性能敏感的应用场景下,或是处理历史数据时。例如,GBK是中国大陆地区常用的中文编码之一,它基于GB2312进行了扩展,以支持更多的汉字。尽管如此,Unicode因其广泛的适用性和良好的兼容性,已经成为现代软件开发不可或缺的一部分。


http://www.kler.cn/a/452106.html

相关文章:

  • 004-spring-注解aop的使用
  • NS3学习——tcpVegas算法代码详解(2)
  • Mac上Stable Diffusion的环境搭建(还算比较简单)
  • 数据结构之线性表之顺序表
  • Docker--宿主机执行docker容器的命令
  • 云原生后端开发(一)
  • 2.系统学习-逻辑回归
  • 怎么在ubuntu系统上安装qt项目的打包工具linuxdeployqt
  • 目标检测与R-CNN——paddle部分
  • 前端面经每日一题Day21
  • MDS-NPV/NPIV
  • 如何完全剔除对Eureka的依赖,报错Cannot execute request on any known server
  • pytorch nn.Unflatten 和 nn.Flatten模块介绍
  • Chrome 浏览器插件获取网页 iframe 中的 window 对象
  • 【ORB-SLAM3:相机针孔模型和相机K8模型】
  • Chapter 03 复合数据类型-1
  • RBF分类-径向基函数神经网络(Radial Basis Function Neural Network)
  • 数据库安全-redisCouchdb
  • 硬件设计-传输线匹配
  • 3D视觉坐标变换(像素坐标转换得到基于相机坐标系的坐标)
  • 以太网通信--读取物理层PHY芯片的状态
  • C++ 特殊类的设计
  • 开发微信小程序的过程与心得
  • RuoYi-ue前端分离版部署流程
  • mac中idea菜单工具栏没有git图标了
  • 【HarmonyOS NEXT】hdc环境变量配置