此编码是什么:“ \'ca \'fd \'cf \'d4 \'bf \'a8 \'b3 \'df \'d1 \'af \'bc \'db”?

时间:2018-07-04 22:00:26

标签: unicode cjk

我正在阅读C#的文档,该文档应该是中文的,但是却出现如下行:

"}\htmlrtf {\f6 \htmlrtf0 \'ca\'fd\'cf\'d4\'bf\'a8\'b3\'df\'d1\'af\'bc\'db"

有人可以告诉我这种编码是什么,如何解码?

1 个答案:

答案 0 :(得分:2)

RTF是7位ASCII格式(\htmlrtf命令是Microsoft对RTF格式的扩展)。

在RTF文档中,非ASCII字符可以用两种不同的方式之一表示:

  1. 字符集编码为8位字节,然后每个字节以\'XX格式转义。

    这就是您在文档中看到的。因此,十六进制序列\'ca\'fd\'cf\'d4\'bf\'a8\'b3\'df\'d1\'af\'bc\'db是字节序列0xCA 0xFD 0xCF 0xD4 0xBF 0xA8 0xB3 0xDF 0xD1 0xAF 0xBC 0xDB的转义形式。

    要将该字节序列转换为Unicode字符串(C#使用该字符串),您必须使用RTF文档前面指定的代码页(通过RTF文档标题中的\ansi, \mac, \pc, pca, or \ansicpg command)来解释字节。 )。

    例如,当使用代码页936或20936(对于简体中文)解释时,上述字节序列是Unicode字符串"数显卡尺询价"

  2. Unicode代码点被编码为UTF-16,然后每个代码单元都在\uXXXX format中转义。