我正在阅读C#的文档,该文档应该是中文的,但是却出现如下行:
"}\htmlrtf {\f6 \htmlrtf0 \'ca\'fd\'cf\'d4\'bf\'a8\'b3\'df\'d1\'af\'bc\'db"
有人可以告诉我这种编码是什么,如何解码?
答案 0 :(得分:2)
RTF是7位ASCII格式(\htmlrtf
命令是Microsoft对RTF格式的扩展)。
在RTF文档中,非ASCII字符可以用两种不同的方式之一表示:
字符集编码为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字符串"数显卡尺询价"
。
Unicode代码点被编码为UTF-16,然后每个代码单元都在\uXXXX
format中转义。