为什么 RTF 中的 Unicode 字符后跟 \'3f?

问题描述 投票:0回答:1

如果你看一下 RTF 编码 Unicode 的方式,它总是在一个 Unicode 字符后跟一个 0x3f 字符,这是一个问号:

\u20181\'3f\u20182\'3f\u20183\'3f\u30340\'3f

这里有人知道为什么会这样吗?是否只是为了保持与 pre-Unicode RTF 阅读器的兼容性?

unicode rtf
1个回答
0
投票

\'3f
代表十六进制字符。在这种情况下(在 Python 的帮助下),一个问号。这取决于当前选择的代码页,它没有显示在提供的 RTF 中,但无论它是什么,都不支持该代码页中的这些字符:

>>> chr(0x3f)
'?'

Unicode 字符是

仕他仗的
(再次借助 Python 的帮助):

>>> chr(20181)+chr(20182)+chr(20183)+chr(30340)
'仕他仗的'

在我生成并保存为 RTF 格式的 Word 文档中,

\u-26004\'c2\'ed\u20811\'bf\'cb
是两个字符
马克
c2 ed
bf cb
是由
\fcharset134
在文档前面选择的中文编码等价物。

>>> chr(-26004 & 0xffff) + chr(20811)  # 0xffff mask needed to limit 2s complement to 16 bits.
'马克'
>>> bytes.fromhex('c2 ed bf cb').decode('chinese')
'马克'

有关更多信息,请阅读 RTF 规范

© www.soinside.com 2019 - 2024. All rights reserved.