计算机里的unicode编码和UTF-8的关系

一、unicode的基本信息

目前的统一码字符分为17组编排,每组称为平面(Plane),每平面有65536(216)点代码,但目前只用了少数平面。

Unicode采用16位编码,也就是每个代码点由16位二进制数表示,65536这个数值在计算机科学中具有特殊的含义。它是2的16次方,也就是说,用16个二进制位可以表示的不同取值的数量。

相关参考文档:

unicode发展背景 :https://zh.wikipedia.org/wiki/Unicode

unicode基本设计 :https://zh.wikipedia.org/wiki/Unicode%E5%AD%97%E7%AC%A6%E5%B9%B3%E9%9D%A2%E6%98%A0%E5%B0%84

unicode通用字符集 :https://zh.wikipedia.org/wiki/%E9%80%9A%E7%94%A8%E5%AD%97%E7%AC%A6%E9%9B%86

二、unicode和utf-8的关系

首先强调一下以下几个概念的区别:

  1. 字符:就是我们看到的一个字母或一个汉字、一个标点符号都叫字符。如上边的汉字"一"就是一个字符。
  2. 字符码:在指定的字符集中,一个字符对应唯一一个数字,这个数字就叫字符码。如字符"一",在 Unicode 字符集中,对应的字符码为 \u4e00。
  3. 字符集:规定了字符和字符码之间的对应关系。
  4. 字符编码:规定了一个字符码在计算机中如何存储,utf-8就是字符编码。

UTF-8(Unicode Transformation Format-8)是一种编码方案,它用于将Unicode字符编码为字节序列以便存储和传输。UTF-8使用变长编码方式,根据字符的不同范围使用不同长度的字节表示字符。UTF-8编码方案能够表示Unicode字符集中的所有字符,并且兼容ASCII字符集。

在UTF-8编码中,ASCII字符使用一个字节表示,而非ASCII字符(如中文、日文、韩文等)使用多个字节表示。这种编码方式使得UTF-8在存储和传输文本数据时既能保持兼容性,又能有效地节省空间。

在编程中,我们使用Unicode字符集来表示字符,并使用UTF-8编码方案将字符转换为字节序列进行存储和传输。这两者在编程中是密切相关的,但它们是独立的概念,没有关闭的操作。

相关推荐
Sakura_j_h_5 天前
Python 在定时任务里输出 emoji,UnicodeEncodeError 从哪来
开发语言·字符编码·windows·python·定时任务
Logic10116 天前
C语言/数据结构字符串题解:统计“chhc“子串权值总和——一次遍历模式匹配
c语言·数据结构·算法·字符串·时间复杂度·空间复杂度·ascii
Patrick在香港19 天前
同一份脚本,mac 正常 Windows 乱码:open() 默认编码实测(附 3.15 终局)
utf-8·windows·python·macos·跨平台·编码·标准库
青柠之夏cc23 天前
PHP URL安全编码解码实战技巧
串·编码·字符
青柠之夏cc25 天前
URL编码揭秘:安全传输的基石
编码·字符·特殊
Logic1011 个月前
C语言/数据结构字符串题解:按字符类型重排(数字→字母→符号)——三趟扫描稳定分区
c语言·数据结构·字符串·时间复杂度·计数排序·算法题·ascii
潘潘的嵌入式日记1 个月前
同一批文件,JS 和 Python 数出来的字符数为什么不一样
utf-8·开发工具·bom·换行符·字符计数
小静AI工程实验室1 个月前
Python 爬虫中文乱码排查:严格解码、UTF-8 BOM 与 JSON 转义的 12 项实验
字符编码·爬虫·python
向哆哆3 个月前
【Bug已解决】openclaw encoding error / invalid byte sequence — OpenClaw 编码错误解决方案
utf-8·gbk·bug解决·openclaw·编码错误
minji...5 个月前
MySQL数据库 (二) 库的操作(增删查改),库的字符集和校验集,数据库的备份与恢复
数据库·mysql数据库·字符集·库的增删查改·校验集·数据的备份·数据的恢复