【发布时间】:2020-11-02 16:14:05
【问题描述】:
我在解码时有点卡住了。我得到了一个 base64 编码的 .rtf 文件。
其中的一小部分如下所示:Bek\u252\''fcld\u337\''3f
代表:Beküldő
但是我解码后的输出数据是:Bekuld?
如果我手动替换字符就可以了。
StringReplace(Result, 'U337\''3F', '''F5', [rfReplaceAll, rfIgnoreCase]);
有人知道这个的通用解决方案吗?聊聊什么的?
【问题讨论】:
-
嗨 - 欢迎来到 Stack Overflow 上的 Delphi。请具体说明您的问题 - 您显示的片段不是您所说的内容的 Base64 编码版本。如果您不清楚问题,很难知道如何最好地帮助您。如果您的输入是正确的 Base64 编码,那么您应该能够生成输入的二进制等效项。如果你想把它当作一个字符串,你需要确保你的解码是允许的。例如,UTF8 和 UTF16LE 不是相同的二进制输入。
-
RTF 不是 base64 编码的。处理此问题的最佳方法是使用实际的 RTF 解析器、(无头)RichEdit 控件等为您解码 RTF,然后您可以从输出中提取所需的文本。
-
@RemyLebeau 他没有说 rtf 是 base-64 编码的。他写道,他“得到了一个 base-64 编码的 .rtf 文件”。
-
@RobLambden IIRC RTF 尝试仅是 7 位 ASCII,并转义大多数非 ASCII 字符,例如 é而不是é。实际中可能有 8 位 WinAnsi 内容,具体取决于 RTF 编写器。但绝对不是 UTF-16。 RTF 是一个非常复杂的野兽。它默认定义
\ansi,即WinAnsi / codepage 1252。
标签: delphi delphi-2010 delphi-xe