Unicode私有使用区域

目录

1、概述
2、Unicode标准中的描述
2.1、基本多语言平面的私有区域
2.2、补充私有区域
2.3、私有区域位置
3、实际测试
3.1、测试代码
3.2、测试结果
4、最后的结论

1、概述

Unicode规范中,私有使用区域一共3个,分别是1+2,1是指在BMP(基本多语言平面)中的U+E000U+F8FF,共6400个编码点位,2是指两个补充私有区域,很大,其范围几乎覆盖了平面15和平面16的全部(BMP是编号为0的平面,15、16是Unicode的最后两个平面,除了末尾的两个编码点,其余都是私有使用区域),15号平面的私有使用区域范围是:U+F0000U+FFFFD,末尾的两个(U+FFFFEU+FFFFF)除外;16号平面的私有使用区域范围是:U+100000U+10FFFD,末尾的两个(U+10FFFEU+10FFFF)除外。

平面编号 平面名称 范围 编码点数量 说明
0 BMP,基本多语言平面 U+E000 ~ U+F8FF 6400 = 4096+2304 建议:企业从前(U+E000)往后用,
个人从后U+F8FF往前用
15 PUP-A,补充私人使用区域-A U+F0000 ~ U+FFFFD 65534 = 65536 - 2 末尾的两个(U+FFFFEU+FFFFF)除外
16 PUP-B,补充私人使用区域-B U+100000 ~ U+10FFFD 65534 = 65536 - 2 末尾的两个(U+10FFFEU+10FFFF)除外

2、Unicode标准中的描述

私有字符被指定为Unicode码位,其解释未由Unicode标准规定,其使用可能由合作用户之间的私人协商决定。这些字符被指定用于私人用途,并且没有定义的、可解释的语义,除非通过私人协议。

私有字符通常用于实现最终用户定义的字符(EUDC),这在东亚计算环境中很常见。Unicode标准没有为私用字符提供图表,因为任何此类字符的性质仅在本标准上下文之外定义。

Unicode标准中提供了三个不同的私有字符块:BMP中的主要私有区(PUA, Private Use Area)和补充平面中的两个补充私有区。

Unicode标准中似有字符块中的所有代码点都被永久指定为私有。Unicode 联盟不会为这些代码点背书或记录对特定标准字符集的赋值。任何之前将字符用作私用字符的行为都与是否以及如何编码该字符的任何实际编码决策没有直接关系。字符标准化必须始终遵循新字符或脚本编码的正常过程。

属性。任何私人协议都无法更改保留给私人使用的字符代码。然而,许多Unicode算法使用General_Category属性或通过引用General_Catagory属性派生的属性。私人协议可以覆盖General_Category或基于它的派生,除非在特定算法的一致性声明中明确禁止覆盖。换言之,私人协议可以定义哪些私人使用字符应被这些私人协议的各方视为空格、数字、字母、标点符号等。特别是,当私有协议将私有字符的General_Category从默认值gc=Co覆盖为其他值,如gc=Lu或gc=Nd时,这样的更改不会改变其作为私有字符的固有身份,而只是根据私有协议指定其预期行为。

对于所有其他属性,Unicode字符数据库还为私有字符提供默认值。除了与规范化相关的属性外,这些默认属性值应被视为信息性的。它们旨在允许实现以一致的方式处理私有字符,即使没有特定的私有协议,并简化通用类型的私有字符的使用。这些默认值基于私有字符的典型用例。实现可以根据其私用要求自由更改或覆盖默认值。例如,私有协议可能指定将两个私有字符视为一个事例映射对,或者私有协议可以指定将呈现一个私有字符,否则将其视为组合标记。

为了以语义一致的方式交换私有字符,用户还可以交换私有定义的数据,这些数据描述了如何解释每个私有字符。Unicode标准没有为这种数据交换提供预定义格式。

规范化。任何私有字符的规范分解和兼容性分解都等于字符本身(例如,U+E000分解为U+E00)。私有字符的Canonical_Combining_Class定义为0(Not_Reordered)。这些值由Unicode标准规范定义,不能通过私人协议更改。规范化格式NFC、NFD、NFKD和NFKC的所有专用字符的处理也由Unicode标准根据这些分解进行规范性定义。(见Unicode标准附件#15,“Unicode规范化格式”)任何私人协议都不得更改这些格式,例如,通过更改私有字符的标准规范或兼容性分解。这意味着,所有私用字符,无论它们受什么私用协议的约束,都会对自己进行规范化,并且永远不会以任何Unicode或malization形式重新排序。

这并不排除就其他转型达成私人协议。因此,可以定义一个与NFC相同的转换“MyCompanyComposition”,只是它将U+E000映射为“a”。然而,NFC、NFD、NFKD和NFKC本身的形式不能因此类协议而改变。

2.1、基本多语言平面的私有区域

主要私有区由U+E000U+F8FF范围内的代码点组成,总共6400个私有字符。

编码结构。按照惯例,主要私有区被划分为平台编写器的公司级使用分区,从U+F8FF开始向下扩展,以及从U+E000开始向上扩展的最终用户分区。

通过遵循此约定,可以减少平台编写器定义的私有字符与最终用户定义的私有字符之间发生冲突的可能性。然而,应该指出,这只是一个公约,而不是一个强制性规范。原则上,任何用户都可以定义任何私用字符的任何解释。

公司用途子区域。系统供应商和/或软件开发人员可能需要保留一些专用字符,供其软件内部使用。公司用途分区是此类保留的首选区域。此分区中的字符语义分配可能完全是内部的,对最终用户隐藏,并且仅用于特定于供应商的应用程序支持,也可能作为特定于供应商、可供应用程序和最终用户使用的字符分配发布。前一种情况的一个例子是将字符代码分配给系统支持操作,例如或;后一种情况的一个例子是将字符代码分配给特定于供应商的徽标字符,例如苹果的apple字符。

然而,请注意,系统供应商可能需要支持所有专用字符的完全最终用户可定义性,例如gaiji支持或瞬态交叉映射表。使用非字符(见第23.7节“非字符”和第3.4节“字符和编码”中的定义D14)是使用各种不可交换的内部系统哨兵的首选方式。

最终用户子区域。最终用户子区域用于最终用户的私有字符定义或最终用户应用程序的字符空间临时分配。

分区分配。供应商可以选择在公司使用分区中保留私人使用字符的范围,并使最终用户分区的某些定义部分可用于完全免费的最终用户定义。划分这两个分区的约定仅仅是为了方便系统供应商和软件开发人员。由于不同的用户可能有不同的要求,本标准没有明确界定两个分区之间的界限。Unicode标准中没有规定避免两个子区域之间的“堆叠冲突”(stack-heap collision);换句话说,没有保证最终用户不会在与同一代码点的特定公司私有定义重叠和冲突的代码点定义私有字符。避免定义中的这种重叠取决于实现和用户。

2.2、补充私有区域

编码结构。除了字符U+FFFFEU+FFFFF外,整个平面15被定义为补充私有区域-A。除了字符U+10FFFEU+10FFFF外,整个平面16被定义为补充私有区域-B。这些区域共同构成了131068个额外的代码点供私人使用。

补充PUA为基本PUA中6400个私有字符不足的实现提供了额外的私有字符无差别空间。

2.3、私有区域位置

图2-13的纵向编码空间最底部的两个区域(从F0000100000再到10FFFF)展示了两个私有平面的分配位置,其名称叫“Supplementary Private Use Area-A”和“Supplementary Private Use Area-B”,在整个Unicode的区域中都是在最末位的位置。

图2-14展示了BMP平面中的私有区域分配的位置,在底部倒数第二个的“E000-F8FF Private Use Area”的位置。

3、实际测试

在我的实际测试用例中,发现了有意思的结果,在Mac OS 12 + IDEA2020 + java8的环境中,打印了BMP中的私有使用区域的6400个字符,结果有大部分的编码点是有字符的,但在Mac和Linux的命令行中却发现BMP中的私有使用区域没有可展示的字符。

3.1、测试代码:(使用java语言编写)

public class UnicodePUPTest {
public static void main(String[] args) {
int start = 0xE000;
int end = 0xF8FF;
int count = 0;
for (int i = start; i <= end; i++) {
count++;
System.out.print(((char) i) + " ");
if (i % 640 == 0) {
System.out.println();
}
}
System.out.println("\ncount = " + count);
}
}

3.2、测试结果展示

以下为IDEA的控制台结果截图,可以看到大部分的编码点上有字符被分配上去的:

但是将文本拷贝到文本文件中,在Mac的命令行上用cat命令查看文本却有不一样的结果:

将文件上传到Linux服务器,再用cat命令查看文件内容同样得到了大部分都无法展示的结果:

以下给出了6400个私有区域的字符,在不同的渲染工具可能有不一样的效果:

                                                                                                                                                                                                                                                                
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                                                                                                                                                                                                              
count = 6400

4、最后的结论

私有区域的字符没有统一的标准,各个工具解析的结果不尽相同。

</article>

[转帖]Unicode标准中定义的3个私有使用区域-一个基本区域+两个补充区域的更多相关文章

  1. web标准中定义id与class有什么区别吗

      <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/x ...

  2. Unicode标准以及其常见的编码方案

    目录 基本概念 码位 码位的类型 编码方案 UTF-32 UTF-16 UTF-8 参考资料 Unicode标准为每一个字符提供一个唯一的数字,而不用区分平台.语言等因素. The Unicode S ...

  3. C++11标准中常用到的各种算法汇总.

    在C++11标准中定义了很多算法,这些算法可以让我们很方便的操作各种容器和数组,这里要注意一下,这些算法操作的并非容器,而是迭代器,然后通过迭代器来操作容器中的数据,算法本身并不会关注容器中保存的数据 ...

  4. stm32存储器映像和标准库中定义外设地址的方法

    结合存储器映像理解stm32标准库中定义外设地址的方法. stm32f103zet6是32位的.它所能访问的地址空间范围为2^32=4GB,把4GB分为8个block,分别为block0-block- ...

  5. Unicode规范中的BOM 和 ISO8891-1编码

    Unicode规范中的BOM Unicode规范中有一个BOM的概念.BOM——Byte Order Mark,就是字节序标记.在这里找到一段关于BOM的说明: 在UCS 编码中有一个叫做" ...

  6. JavaScript jQuery 中定义数组与操作及jquery数组操作

    首先给大家介绍javascript jquery中定义数组与操作的相关知识,具体内容如下所示: 1.认识数组 数组就是某类数据的集合,数据类型可以是整型.字符串.甚至是对象Javascript不支持多 ...

  7. UNICODE 7.0定义的表情符

    td.graph { font-size:24px; } UNICODE 7.0定义了78个表情符,从0x1F600到0x1F64F(其中0x1F643和0x1F644没有定义).下表中列出了这些表情 ...

  8. 在 Excel 工作簿中定义决策表(Oracle Policy Modeling-Define decision tables in Excel workbooks)

    要在 Excel 中编写规则,您只需在表中编写规则,并使用 Oracle Policy Modeling 样式标识单元格中的信息类型, 以便这些规则可以编译并在 Oracle Determinatio ...

  9. c语言头文件中定义全局变量的问题

    c语言头文件中定义全局变量的问题 (转http://www.cnblogs.com/Sorean/) 先说一下,全局变量只能定义在 函数里面,任意函数,其他函数在使用的时候用extern声明.千万不要 ...

  10. ZZmsvcprt.lib(MSVCP90.dll) : error LNK2005:已经在libcpmtd.lib(xmutex.obj) 中定义 .的分析解决办法 (转)

    很久没有写程式设计入门知识的相关文章了,这篇文章要来谈谈程式库 (Library) 连结,以及关于 MSVC 与 CRT 之间的种种恩怨情仇. 如果你使用的作业系统是 Linux.Mac 或其他非 W ...

随机推荐

  1. Kiractf

    信息收集 主机发现和端口扫描只开放了80的web服务 ​​ ‍ WEB打点 访问首页有文件上传,肯定可以利用一波.language那个页面甚至文件包含都写脸上了. root@Lockly tmp/ki ...

  2. 一个简单的Python暴力破解网站登录密码脚本

    目录: 关键代码解释 完整代码 方法一 运行结果 方法二 运行结果 测试靶机为DVWA,适合DVWA暴力破解模块的Low和Medium等级 关键代码解释 url指定url地址 url = " ...

  3. mysql将查询结果生成临时表

    MySQL中将查询的结果生成临时表,列类型与查询的列一致,百度搜索到的没啥用. 直接上SQL: 将结果生成临时表 create temporary table temp_tb_name as (sel ...

  4. Sequelize的简单连接和使用

    Sequelize是一个基于Node.js的ORM框架 特点: 1.支持多种数据库:Sequelize支持多种关系型数据库,包括MySQL.PostgreSQL.SQLite和MSSQL等,适用于需要 ...

  5. 聚焦企业开放OpenAPI痛难点,华为云API Explorer助力构建API门户

    本文分享自华为云社区<聚焦企业开放OpenAPI痛难点,华为云API Explorer助力伙伴构建API门户>,作者:华为云PaaS服务小智. 当前,IT研发的主流架构已从单体架构向微服务 ...

  6. 教你VUE中的filters过滤器2种用法

    摘要:Vue.js 允许我们自定义过滤器,可被用于一些常见的文本格式化. 本文分享自华为云社区<VUE中的filters过滤器用法>,作者:小小张自由--张有博. 前言 Vue.js 允许 ...

  7. 火山引擎 ByteHouse:TB 级数据下,如何实现高效、稳定的数据导入

    更多技术交流.求职机会,欢迎关注字节跳动数据平台微信公众号,回复[1]进入官方交流群 近期,火山引擎开发者社区.火山引擎数智平台(VeDI)联合举办以<数智化转型背景下的火山引擎大数据技术揭秘& ...

  8. 对话 BitSail Contributor | 梁奋杰:保持耐心,享受创造

    2022 年 10 月,字节跳动 BitSail 数据引擎正式开源.同期,社区推出 Contributor 激励计划第一期,目前已有 13 位外部开发者为 BitSail 社区做出贡献,成为了首批 B ...

  9. Kubernetes(K8S) 介绍

    Master Api Server 统一入口,以 Restful 方式,交给 etcd 存储 Scheduler 节点调试,选择 Node 节点,做应用部署 Controller Manager 处理 ...

  10. Woodpecker CI 设计分析|一个 Go 编写的开源持续集成引擎

    一.前言 大家好,这里是白泽.随着 Go 语言在云原生领域大放异彩,开发者逐渐将目光转移到了这门语言上,而容器则是云原生时代最核心的载体. <Woodpecker CI 设计分析>系列文章 ...