gpt4 book ai didi

unicode - RTF 错误代码的含义

转载 作者:行者123 更新时间:2023-12-04 16:12:13 25 4
gpt4 key购买 nike

我正在处理由其他人在未知平台上制作的 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" becomes "\u226\'3fge\uc2 \u61825\'ff\'81\uc1 c V\u233\'3fnus"



最后,我们想出什么:

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



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

然后, \'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 编码中找到完整的原始文本!

    最佳答案

    what the translated text (in french) would make us expect is the ":" (semicolon



    Nearly:应该是省略号。您可以查看源文本,例如 here .

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

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

    61825 is an unknown Unicode character.



    这是一个私有(private)使用区域字符,这意味着它可以代表任何东西。 Word 已将某些常用符号字体导出为 PUA 字符 - 请参阅 this post为背景。

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

    关于unicode - RTF 错误代码的含义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10122437/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com