0

我注意到我生成的 XHTML5 编号的章节标题在数字和标题字符串之间有一个 Â。我认为这是一个世代错误。但是不,我的 DocBook 发行版的 gentext 文件 common/en.xml 实际上指定了这一点。

common/en.xml 的第 338 行:

<l:template name="section" text="%n. %t"/>

当在十六进制编辑器中查看时,%n 后面的点和空格是 ASCII 字符代码 C2 和 A0,它们分别是 Â 和 NBSP 字符。我能理解NBSP。但为什么是?

我知道我可以在我的自定义层中更改它。但默认值似乎很奇怪。

我正在使用 docbook-xsl-ns-1.77.1。

4

1 回答 1

2

那是因为编码是 UTF-8,这是当今文本的正常 Unicode 编码。在 UTF-8 中,任何高于 0x7F 的字符都由 2、3 或 4 个字节的序列表示,具体取决于它包含多少有效代码位。

0xC2 是开始 2 字节序列的字符之一。在二进制中,它是 1100 0010。两个 1 位表示一个 2 字符序列,而后五位是编码字符的前五位。第二个 0xA0 是 1001 0000。单个前导 1 位(后跟 0 位)表示序列的延续,底部 6 位是编码字符的底部位。

将第一个字节的低五位与第二个字节的低六位放在一起,我们得到 000 1001 0000,十六进制 U+A0,这确实是不间断的空间。

于 2013-02-16T17:26:41.087 回答