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. 痞子衡嵌入式:在i.MXRT1170上快速点亮一款全新LCD屏的方法与步骤(MIPI DSI接口)

    大家好,我是痞子衡,是正经搞技术的痞子.今天痞子衡给大家分享的是在i.MXRT1170上快速点亮一款全新LCD屏的方法与步骤. 我们知道 LCD 屏的接口有很多:DPI-RGB.MIPI DSI.DB ...

  2. C语言基础之因子分解

    要求: 从键盘输入一个正整数,然后将该整数分解为1和各个质因子的相乘,如果输入的整数本身就是质数,则应分解为1和该数本身相乘. 输出格式: 因子分解,因子由小到大输出. 如:1* 2* 2* 3 代码 ...

  3. 原生JavaScript 与 jQuery 执行Ajax请求

    原生JavaScript和jQuery都可以用来执行Ajax请求,以下是它们的基本实现方式的比较: 原生JavaScript实现Ajax请求: var xhr = new XMLHttpRequest ...

  4. CodeForces 1141F2 贪心 离散化

    CodeForces 1141F2 贪心 离散化 题意 给定一个序列,要求我们找出最多数量的不相交区间,每个区间和都相等. 思路 一开始没有头绪,不过看到 \(n \le 1500\) 后想到可以把所 ...

  5. flutter杂知识点

    child和children用于在一个容器小部件(如Container.Column.Row等)中放置一个或多个子小部件 1.child属性用于容器只包含一个子小部件的情况: 2.children属性 ...

  6. C++篇:第九章_字符串_知识点大全

    C++篇为本人学C++时所做笔记(特别是疑难杂点),全是硬货,虽然看着枯燥但会让你收益颇丰,可用作学习C++的一大利器 九.字符串 可以用[ ]进行下标访问 使用string类需将头文件包含在程序中, ...

  7. 关于汽车OTA,这篇科普文能告诉你

    随着汽车中软件发挥的作用越来越重要,软件定义汽车已经是行业内的共识.汽车行业的发展极有可能最终像手机产业一样,基础硬件差异会越来越小,关键在于汽车给用户的体验的多样性,以及汽车产品在不同场景下满足用户 ...

  8. 使用LiteOS Studio图形化查看LiteOS在STM32上运行的奥秘

    摘要:本文带来基于LiteOS一站式开发工具LiteOS Studio,通过单步调试,来动态分析LiteOS的启动流程. 编者按:在LiteOS大揭秘系列,我们和读者们分享了<LiteOS是怎么 ...

  9. Nacos是什么?

    摘要:Nacos是 Dynamic Naming and Configuration Service的首字母简称,相较之下,它更易于构建云原生应用的动态服务发现.配置管理和服务管理平台. 本文分享自华 ...

  10. 华为云PB级数据库GaussDB(for Redis)揭秘第十期:GaussDB(for Redis)迁移系列(上)

    摘要:本期将详细介绍社区版Redis.kvrocks和Pika到GaussDB(for Redis)的迁移 本文分享自华为云社区<华为云PB级数据库GaussDB(for Redis)揭秘第十期 ...