Unicode图表中指标XXX的含义是什么

时间:2014-02-19 17:59:30

标签: unicode

考虑Unicode Charts中C1控件和Latin-1补充的unicode图表。如果一个字符有一个字形,则显示它,如果它没有字形,则给出一个特殊的虚线和符号标记或标识符。在这种情况下,0080和0081似乎都有一些“无效标记”,我认为这是“XXX”的含义。这是什么意思?

enter image description here

其次,具有存储在值0x80(十六进制)或128(十进制)字符串中的值的Unicode感知字符串类型的行为应该是什么?它应该转换为其他点,例如这样的映射:

  • 许多ANSI代码页中的字节值128是EURO标记。
  • 存储128位十进制值相当于存储U + 20AC?

我在其MBCS和Unicode类型的特定语言或操作系统API实现中遇到的神奇的“非正交性”,以及Java的有趣处理,让我想知道,U + 0080字符的真正用途是什么?这个reference link让我感到困惑,因为它表明Java将这个字符视为欧元符号(ANSI代码页以Unicode单向友好),但它的名称是<control>,这不是我知道如何处理的。维基百科说它是PAD here

任何人都可以帮助我吗?我是否在Unicode学校跳过基础概念日?我错过了什么?

更新 0080到0098之间的块是不可打印的控制字符。我知道这个。我想知道XXX是什么意思,当我用这个值处理unicode数据时,我怎么想到这个字符呢?

1 个答案:

答案 0 :(得分:5)

根据Ch。中的解释。 17 {关于代码图表'Unicode Standard,p。在图573中,通过“虚线框约定”,没有可见渲染的字符“由方形虚线框表示。此框包含角色名称的简短助记符缩写。“问题中提到的字符是控制字符,位于C1控制区域。

Unicode标准说,在Ch。 16,p。 544,关于C0和C1控制:“Unicode标准规定了这些代码点的完整交换,既不增加也不减去它们的语义。控制代码的语义通常由使用它们的应用程序确定。但是,在没有特定应用程序用途的情况下,它们可以根据ISO / IEC 6429:1992中规定的控制功能语义进行解释。“方形虚线框中的缩写反映了ISO / IEC 6429:1992中给出的含义。

C1 Controls区域中的某些代码点未在ISO / IEC 6429:1992中定义。对于它们,例如U + 0080,代码表具有“XXX”代替助记符缩写。所以这表明Unicode标准没有引用那些代码点的任何含义,除了它们是具有一些抽象属性的控制字符之外。

因此,“XXX”并不意味着“无效”,而是“完全未定义的含义”。这些代码点的含义可以通过各种标准或其他约定来定义,只要它们与一般定义一致即 - 例如,将U + 0080定义为图形字符是不兼容的。

在任何字符级处理中不得替换或省略此类代码点;实际上更改数据的应用程序可以执行任何他们想要的操作,但是任何常规转换例程都必须保持这些代码点(字符)不变。不得将其视为畸形或无效;但是应用程序可能会将它们视为未定义。按照Unicode原则,对一个角色一无所知是可以的,但并不是完全错误的。

这与8位代码(如Windows-1252)中像0x80这样的字节含义无关。但如果你发送,例如标记为ISO-8859-1编码的数据(例如,其中0x80原则上是U + 0080)到Web浏览器,它实际上将其视为Windows-1252编码。原因是像U + 0080这样的字符实际上从未用于ISO-8859-1数据;在ISO-8859-1标记数据中出现0x80实际上总是windows-1252错误标记或无法有意义地处理的混乱数据。所以浏览器采用实用的路线,将ISO-8859-1视为windows-1252;这正在HTML5及相关规范中形式化。

相关问题