在UTF8中可以有多个Unicode连字符吗?

时间:2012-02-22 12:20:38

标签: xml unicode utf-8

在UTF8中可以有一个unicode连字符fi(Unicode U + FB01)多个表示吗?哪一个?对于每种规范化形式?

2 个答案:

答案 0 :(得分:2)

该字符应0xEF 0xAC 0x81 utf-8 f,但相同的字符可以按顺序分解为i0x66 0x69,它们一起{ {1}}。您的问题实际上是由be encoded as直接回答的:

normalized forms of ligatures

正如您所看到的,NFDNFC规范化仍然使用相同的连字符代码点,而NFKDNFKC表单使用{{1} } + f组合。

答案 1 :(得分:2)

这取决于“性格”的含义,这是相当模糊的。在Unicode中,“字符”通常表示分配给字符的代码点,这确实与“字符”的直观概念完全匹配。

单个代码点(例如U + FB01)只有一个UTF-8表示形式,因为UTF-8定义了一个用于生成编码形式的明确算法。

直观字符(例如连字符)可以具有不同的表示形式作为代码点或代码点序列,每个代码点具有UTF-8表示。 Unicode规范化规则部分地定义了这些替代方案之间的映射。

但是U + FB01的兼容性映射(到U + 0066 U + 0069,即“f”后跟“i”)并不保留直观字符的标识:连字被映射到两个普通字母。 / p>

另一方面,您可以通过在两个字母之间插入U + 200D ZERO WIDTH JOINER(ZWJ)来询问或建议结扎行为,例如“f”和“i”。在某种意义上,序列U + 0066 U + 200D U + 0069是fi连字的另一种表示,但这不是字符的形式属性,它依赖于渲染软件是否关注ZWJ。