unicode的理解,

深入理解Unicode排序与比较 本文深入探讨了Unicode中的搜索和排序机制,详细解析了如何处理等价表示和兼容等价字符串的问题,以及泰语和老挝语排序的特殊情况。文章还介绍了Unicode排序算法(UCA)的基本要求和特性,包括其提供的默认排序顺序,以及如何将原始Unicode文本映射到排序元素。此外,还讨论了语言敏感比较的策略,包括分解、重新排序、映射、分割权重和二进制比较等阶段,并展示了对特定字符串示例的比较过程。 阅读详情

from http://zh.wikipedia.org/zh-cn/Unicode

 Unicode编码系统可分为编码方式和实现方式两个层次。

编码方式[编辑]

统一码的编码方式与ISO 10646的通用字符集概念相对应。目前实际应用的统一码版本对应于UCS-2,使用16位的编码空间。也就是每个字符占用2个字节。这样理论上一共最多可以表示216(即65536)个字符。基本满足各种语言的使用。实际上当前版本的统一码并未完全使用这16位编码,而是保留了大量空间以作为特殊使用或将来扩展。

上述16位统一码字符构成基本多文种平面。最新(但未实际广泛使用)的统一码版本定义了16个辅助平面,两者合起来至少需要占据21位的编码空间,比3字节略少。但事实上辅助平面字符仍然占用4字节编码空间,与UCS-4保持一致。未来版本会扩充到ISO 10646-1实现级别3,即涵盖UCS-4的所有字符。UCS-4是一个更大的尚未填充完全的31位字符集,加上恒为0的首位,共需占据32位,即4字节。理论上最多能表示231个字符,完全可以涵盖一切语言所用的符号。

基本多文种平面的字符的编码为U+hhhh,其中每个h代表一个十六进制数字,与UCS-2编码完全相同。而其对应的4字节UCS-4编码后两个字节一致,前两个字节则所有位均为0。

关于统一码和ISO 10646及UCS的详细关系,见通用字符集。

实现方式[编辑]

Unicode的实现方式不同于编码方式。一个字符的Unicode编码是确定的。但是在实际传输过程中,由于不同系统平台的设计不一定一致,以及出于节省空间的目的,对Unicode编码的实现方式有所不同。Unicode的实现方式称为Unicode转换格式(Unicode Transformation Format,简称为UTF)

例如,如果一个仅包含基本7位ASCII字符的Unicode文件,如果每个字符都使用2字节的原Unicode编码传输,其第一字节的8位始终为0。这就造成了比较大的浪费。对于这种情况,可以使用UTF-8编码,这是一种变长编码,它将基本7位ASCII字符仍用7位编码表示,占用一个字节(首位补0)。而遇到与其他Unicode字符混合的情况,将按一定算法转换,每个字符使用1-3个字节编码,并利用首位为0或1进行识别。这样对以7位ASCII字符为主的西文文档就大大节省了编码长度(具体方案参见UTF-8)。类似的,对未来会出现的需要4个字节的辅助平面字符和其他UCS-4扩充字符,2字节编码的UTF-16也需要通过一定的算法进行转换。

再如,如果直接使用与Unicode编码一致(仅限于BMP字符)的UTF-16编码,由于每个字符占用了两个字节,在麦金塔电脑(Mac)机和个人电脑上,对字节顺序的理解是不一致的。这时同一字节流可能会被解释为不同内容,如某字符为十六进制编码4E59,按两个字节拆分为4E和59,在Mac上读取时是从低字节开始,那么在Mac OS会认为此4E59编码为594E,找到的字符为“奎”,而在Windows上从高字节开始读取,则编码为U+4E59的字符为“乙”。就是说在Windows下以UTF-16编码保存一个字符“乙”,在Mac OS环境下打开会显示成“奎”。此类情况说明UTF-16的编码顺序若不加以人为定义就可能发生混淆,于是在UTF-16编码实现方式中使用了大端序(Big-Endian,简写为UTF-16 BE)、小端序(Little-Endian,简写为UTF-16 LE)的概念,以及可附加的字节顺序记号解决方案,目前在PC机上的Windows系统和Linux系统对于UTF-16编码默认使用UTF-16 LE。(具体方案参见UTF-16)

此外Unicode的实现方式还包括UTF-7、Punycode、CESU-8、SCSU、UTF-32、GB18030等,这些实现方式有些仅在一定的国家和地区使用,有些则属于未来的规划方式。目前通用的实现方式是UTF-16小端序(LE)、UTF-16大端序(BE)和UTF-8。在微软公司Windows XP附带的记事本(Notepad)中,“另存为”对话框可以选择的四种编码方式除去非Unicode编码的ANSI(对于英文系统即ASCII编码,中文系统则为GB2312或Big5编码)外,其余三种为“Unicode”(对应UTF-16 LE)、“Unicode big endian”(对应UTF-16 BE)和“UTF-8”。

目前辅助平面的工作主要集中在第二和第三平面的中日韩统一表意文字中,因此包括GBK、GB18030、Big5等简体中文、繁体中文、日文、韩文以及越南喃字的各种编码与Unicode的协调性被重点关注。考虑到Unicode最终要涵盖所有的字符。从某种意义而言,这些编码方式也可视作Unicode的出现于其之前的既成事实的实现方式,如同ASCII及其扩展Latin-1一样,后两者的字符在16位Unicode编码空间中的编码第一字节各位全为0,第二字节编码与原编码完全一致。但上述东亚语言编码与Unicode编码的对应关系要复杂得多。


有趣的方式学习DDR5(4)—— DDR5 SDRAM 启动与初始化过程全攻略 🟢。 阅读详情

相关推荐

量化实战:如何用Barra多因子模型给你的投资组合做一次‘风险体检’?

本文详细介绍了如何利用Barra多因子模型对投资组合进行全面的风险体检,帮助投资者识别行业和风格因子的风险暴露。通过实战案例和Python代码示例,展示了数据采集、风险归因和组合优化的完整流程,提升投资组合的风险调整收益。

weixin_27215337的博客 323

Unicode(统一码、万国码、单一码)

Unicode(统一码、万国码、单一码) Unicode(统一码、万国码、单一码)是一种在计算机上使用的字符编码。它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。1990年开始研发,1994年正式公布。随着计算机工作能力的增强,Unicode也在面世以来的十多年里得到普及。 Unicode的编码...

Youpeng 1万+

在Mac上搭建本地AI工作流:Dify与DeepSeek的完美结合

本文介绍了在Mac上搭建本地AI工作流的方法,结合Dify平台和DeepSeek模型。Dify是一个开源的大语言模型应用开发平台,支持可视化AI应用开发。部署步骤包括:1)安装Homebrew和Docker;2)克隆Dify代码库;3)配置环境变量并启动服务。同时,使用Ollama工具本地部署DeepSeek模型,将其集成到Dify中创建聊天助手。通过配置模型接口和新建应用,用户可以在本地环境中实现AI对话功能。这种方案既保证了数据隐私,又提供了灵活的AI应用开发能力。

Linda的自动化测试之旅 1535

统一码介绍

统一码(Unicode),也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 ...

qq_33240556的博客 759

Python+pytest+requests 自动化测试框架

环境准备 本次选用的是Python+Pytest+requests来搭建自动化框架,需要有 Python 环境(3.x 版本),安装pytest和requests,不会安装的自行去网上搜教程。 关于 Pytest 的基本使用,这里不作讲解,不清楚的可以看我之前的文章。 简单 Demo 我们先创建一个项目,取名api-test,然后在下面创建一个test_api.py的文件 # test_api.py import pytest import requests def test_01():

weixin_42686892的博客 1万+

SDM660电源部分配置:

SDM660电源部分配置: Panel power supplies 1、Reference power supplies Description Name Regulator Voltage (V) Panel power supply 0 vddio PMIC 660/L11 1.8 Panel power supply 1 Lab PMIC 660/lab 4.6 Panel power s...

weixin_41811215的博客 4728

002集——统一码(Unicode)及ASCII码详解

统一码(Unicode),它也叫万国码、单一码,是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的,以满足跨语言、跨平台进行文本转换、处理的要求。如果把各种文字编码形容为各地的方言,那么就是世界各国合作开发的一种语言。在这种语言环境下,不会再有语言的编码冲突,在同屏下,可以显示任何语言的内容,这就是Unicode的最大好处。就是将世界上所有的文字用2个字节统一进行编码。

山水CAD 二次开发 3685

使用单片机和电流互感器对非正弦周期电流有效值测定

使用单片机和电流互感器,利用一种高速采样的方法来进行有效值测定

月光绿叶滴水音乐 3945

Unicode统一码及实现方式的全面讲解

统一码(Unicode)也叫万国码、单一码,由统一码联盟开发,是一种全球通用的字符编码标准,旨在为所有语言、符号和表情符号(Emoji)分配唯一的数字编号(称为 码点,Code Point)。它的核心目标是解决传统字符集(如 ASCII、GB2312、GBK、ISO-8859 等)的兼容性问题,消除乱码,实现跨语言、跨平台的文本一致性。

明天起飞吧的博客 2294

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

应用处理器(AP)、系统级芯片(SoC)与微控制器(MCU)的区别与联系

a_zxswer的博客 1692

安装keil软件时安装不了芯片包怎么回事?芯片包安装路径放在Keill里的packs下面,弹框提示报错:Errors retumned from cpackget...如何解决?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 2207

统一码Unicode(UTF-8 UTF-16 GB18030等)的理解

Unicode俗称统一码、万国码、单一码、标准万国码。     Unicode发展是由非营利机构统一码联盟所负责,其致力于让Unicode方案取代既有的字符编码方案。因为既有的方案往往仅有有限的空间,亦不适用于多语环境。      Unicode备受认可,并广泛地应用于电脑软件的国际化与本地化过程。有很多新科技,如可扩展置标语言、Java编程语言,以及现代的操作系统,都采用Unicode编码。

wnczwl369的专栏 2343

如何使用DPABI 进行核磁共振数据结果统计分析?

下面总结使用DPABI 的统计模块对MRI 图像进行统计分析的基本方法,并与SPM 的统计结果进行简单的对比。DPABI 的统计模块包含了常用的统计模型和多重比较校正方法、在控制协变量上也非常方便。 DPABI 进行结果统计分析一、下载和安装 DPABI二、下载样例数据三、统计模型和多重比较校正四、DPABI 的统计主界面五、DPABI 的可视化主界面六、查看统计结果 一、下载和安装 DPABI 下载 DPABI 包,解压后将文件夹和子文件夹加入MATLAB 的搜索路径即可。 具体安装方法详见 dpabi

从事脑科学核磁共振方法学研究,在Nature communications等权威期刊发表研究论文,熟练掌握磁共振处理方法和统计学方法,欢迎大家和我交流。 1万+

Unicode 编码理解

    Unicode(统一码、万国码、单一码)于1990年开始研发,1994年正式公布,是计算机领域里一项业界标准,包括字符集,编码方案等。Unicode是为了解决传统字符编码方案的局限而产生的,为每种语言中的每个字符都设定了统一唯一的二进制编码,以实现跨语言、跨平台进行文本转换、处理的要求。    计算机在设计时采用8个比特(bit)作为一个字节(byte),所以一个字节最多能表示256个字符...

越一步之距 9162

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

通俗理解Unicode编码方式

尝试简单介绍一下Unicode编码方式

yakumosumi的博客 2695

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

Unicode编码方式的理解

Unicode简单来说就是对世界上所有的字符进行了统一的编码。 1:Unicode和非Unicode的区别 Unicode字符串:(1)Nchar:n个字符的固定长度的Unicode字符数据。n值必须在1~4000之间。存储大小为两倍的n字节。 Unicode用法和普通字符串的用法一致,但是Unicode支持的字符范围更大,存储Unicode字符所需要的空间更大。 Unicode数据:un...

qq_41989372的博客 1977

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

从ord()中对Unicode编码的理解

刚开始学习编程的时候,老对字符串编码的理解模模糊糊。也一直看这方便的资料,今天在看Dive in python时,突然有了新的理解(不知道是否正确)。 Python有个built-in函数ord(),返回一个字符的unicode值。这个函数并没有其他参数,那就是说,给定一个字符,就会有一个特定值对应。跟具体编码(utf-8,utf-16,gb2312)无关。 我之前错误的理解是:每套...

ao6713的博客 456

Unicode编码的理解

Unicode编码介绍

sgmcy的专栏 1720

Unicode的理解

Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。 下面是我参考的一篇文章,写得比较清楚: 图说我对Unicode的几点理解

u013793383的专栏 488

史上最好理解的Unicode编码讲解(Unicode的前世今生)

一、了解编码 在计算机中存储的数据都是01二进制的数据串,我们再电脑屏幕上看到的一切可视化的东西最终在计算机存储的都是01二进制串,现在看到我博客上的文字也是。 这里就需要一个映射关系,将我们看到的看到的字符、图片、视频转换成对应的二进制,存储到计算机中,以便于计算机能够识别。这就是我们要将的编码。 图片和视频首先会转换成字符流,然后按照编码转换成字节流,存储到计算机中。 举一个例子:在ASCL...

Zystem 6575

理解:ASCII、Unicode、UTF-8

前言平时喜欢写东西,看博客,一直对编码有些懵,今天下午也不知道看到了什么,突然想了解下,就找到了这个文章,看完真的豁然开朗,这个必须留下来做纪念。点击打开链接1.ASCII我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这...

ruijieyang的博客 229

图说我对Unicode的几点理解

图说我对Unicode的几点理解

zxh的专栏 7640

理解了Unicode你才能理解的String与Character

先说一件事,因为写代码几乎从来没用过Character,所以说难听一点一直就以为就只有String这么一个字符相关的类,现在才发现,我去,还有个Character.虽然以前看到过好几次,但莫名其妙本能的就忽略了,不过还是觉得character单独使用貌似也没什么卵用.哈哈哈,就是调侃一下自己而已。 看完这章文档,发现要想弄明白字符串和字符,就一定要先搞懂Unicode,看的时候没搞懂,写着写着,...

lwthad的博客 1856

unicode编码理解

疑惑为什么一个Unicode:0x4F60(对应汉字是"你")会在UTF8下占用3个字节的存储空间?下面的内容就是对此的系统解释。 Unicode Unicode就像一个电话本,标记着字符和数字之间的映射关系。Unicode并不涉及字符是怎么在字节中表示的,它仅仅指定了字符对应的数字,仅此而已。例如希伯来文中的第一个字母א,是U+2135,字母A是U+0061。 关于Unicode的其它误解包括:...

遥夜 1095

Python与Unicode:理解字符串和字符的表示

在Python编程中,处理字符串和字符是常见的任务。为了正确地表示和操作这些字符,了解Unicode和Python对Unicode的支持至关重要。在这篇博客文章中,我们将探讨Unicode的概念以及如何在Python中使用Unicode。Unicode是一种用于表示字符的标准化编码系统。它的主要目标是为世界上所有字符提供一个统一的表示方式。Unicode使用整数(称为代码点)来表示字符,范围从0到0x10FFFF。

canduecho的专栏 728

怎么理解Unicode,utf-8,ASCII这些编码?

昨天文章发出来后,有几个读者问我,编码这块怎么掌握,感觉总是很模糊,就知道个utf-8编码,到底如何掌握。我其实了解也不深刻,把我知道的字符编码主要知识点,总结如下:Unicode 是最常...

算法channel 277
上一篇: 常用c函数收集
下一篇: C/C++中的i18n(wcstombs和mbstowcs使用)
Feisy
博客等级 码龄19年 166粉丝 235原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值