我正在尝试解析一些从服务器返回的 RTF。对于我得到的大多数文本,这工作正常(并且使用 RichTextBox 控件可以完成这项工作),但是一些 RTF 似乎包含额外的“编码”并且一些字符被损坏。
原始字符串如下(并包含一些波兰语中使用的字符):
ąćęłńóśźż
发回的带有十六进制编码字符的 RTF 字符串如下所示
{\lang1045\langfe1045\f16383 {\'b9\'e6\'ea\'b3{\f7 \'a8\'bd\'a8\'ae}\'9c\'9f\'bf}}
我在解码返回字符串中的ñó字符时遇到问题,它们似乎每个都由两个十六进制值表示,而字符串的其余部分(如预期的那样)由单个十六进制值表示。
使用 RichTextBox 控件“解析”RTF 会导致文本损坏(有问题的两个字符显示为四个不同的不需要的字符)。
如果我自己使用预期的代码页(1250,Latin 2,lcid 1045 的 ANSI 代码页)将纯字符串编码为十六进制,我将得到以下信息:
\'B9\'E6\'EA\'B3\'F1\'F3\'9C\'9F\'BF
我不知道如何正确解码应该对应于ńó的返回字符串的{\f7 \'a8\'bd\'a8\'ae}部分。
请注意,在 RTF 标头中没有\f7的字体定义,当直接在服务器上查看时,字符串看起来很好,这意味着字符(如果它们已损坏)在发送前的转换中某处已损坏。
我不确定问题是否出在服务器端(因为我无法控制),但由于服务器用于大量翻译工作,我假设返回的字符串是可以的。
我一直在阅读 RTF 规范,但找不到关于这种类型的编码组合的任何提示。