4

我正在处理由其他人在未知平台上制作的 RTF 文件,并且所有内容都被正确解释,除了一些字符,无论我在 openoffice 中打开它们的任何字符集。这是经过解释的纯文本:

“Même taille que la Terre,même masse,même âgec Vénus a souvent été qualifiée de sœur de la Terre。”

这是原始的ANSI段落:

"M\u234\'3fme taille que la Terre, m\u234\'3fme masse, m\u234\'3fme \u226\'3fge\uc2 \u61825\'ff\'81\uc1 c V\u233\'3fnus a souvent \u233\'3ft\u233\'3f qualifi\u233\'3fe de s\u339\'3fur de la Terre。”

放大:

“âgec Vénus”变为“\u226\'3fge\uc2 \u61825\'ff\'81\uc1 c V\u233\'3fnus”

最后,我们想出什么:

"\uc2 \u61825\'ff\'81\uc1 c"

这里是说我们在 4 字节\uc2\uc12 字节 Unicode 编码之间来回切换。

\u61825是一个未知的 Unicode 字符。事实上,根据 RTF 规范,任何大于 2^15 的 UTF 字符都应该写成否定形式;带有 ANSI 字符的否定形式应该使记事本可以看到“-”(减号)符号,对吗?所以在这里我已经有了一些我不明白的东西,首先制作 rtf 文件的人使用的 RTF 编写器是如何做到的。也许我错过了规范中的某些内容,具体版本,字符集,我不知道。如果按原样,61825 将对应于 F181,它位于 Unicode 表的私有区域中。

然后,\'ff\'81将使用整个“特定字符”组(其结构通常为\uN\'XX)的 ANSI 等效字段来编码 4 字节长的内容。又在这里,我找不到:

  • 引用的代码页(Windows-1252、ISO-8859-1、其他?)是什么(就像文件中出现\uN\'XX序列的所有其他位置一样,XX始终3F是“?”的 Windows-1252 代码,所以它没有给我太多信息)

  • (看起来\'FF像转义序列中的一些控制字符!)代表什么,然后为什么\'81...实际上,\u61825到十六进制的翻译是F181,而不是FF81...我在这里迷路了!

最后,翻译文本(法语)让我们期待的是“:”(分号):“与地球相同大小,相同质量,相同年龄:金星经常被称为地球的姐妹”。这是有道理的。但是哪个 rtf 的作者能想象出如此复杂的分号代码呢?

所以再一次,经过1小时的搜索,我向你们提出问题:有人认识这个吗,可以告诉我使用了什么控制字编码,61825是否有大端/小端/2的补码混乱,与 相同\'ff\'81,它将组装为FF81而不是F181,它本身并不意味着什么......这里我的问题只是想知道是否有办法从奇怪的 RTF 编码中找到完整的原始文本!

4

1 回答 1

2

翻译后的文本(法语)会让我们期待的是“:”(分号

Nearly:应该是省略号。您可以在此处查看源文本。

省略号通常应该简单地写成三个句点,但传统上,为了更好地控制它们的间距,在存在可以进行自动字形替换的复杂文本布局算法之前,有一个单独的字符表示省略号。因此,存在一个 Unicode 兼容字符 U+2026 HORIZONTAL ELLIPSIS 以允许往返到旧编码,例如 Windows 代码页 1252,它是字节 133。

但是,这不是您的 RTF 文档中编码的内容。那太简单了。

61825 是一个未知的 Unicode 字符。

这是一个私人使用区域字符,这意味着它可以代表任何东西。Word 已将某些常见的符号字体导出为 PUA 字符 - 请参阅此帖子了解背景。

所以有人可能在某个时候使用了符号字体,其中代码单元 129(U+F181 中的 0x81,61825)映射到看起来像省略号的东西。那个字体是什么,我不知道!它似乎不是常见的嫌疑人之一(Symbol、Wingdings、Webdings)。您现在可能只需要手动将 U+F181 替换为 U+2026 ,除非您可以找到有关源的更多信息。

于 2012-04-14T11:48:43.223 回答