首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rtf文件编码

rtf文件编码
EN

Stack Overflow用户
提问于 2015-07-17 09:25:05
回答 1查看 9.5K关注 0票数 1

我得到一个base64编码的字符串,它表示rtf文件。

如果我查看原始文本表示(在base64编码之前),就会看到字符序列F¸r。当在查看器中显示时,这应该代表Für。rtf-文件的头包含ansicpg1252,因此这应该是编码,除非其他修改(转义序列、字体定义.)。

我现在的问题是,我无法正确地将基本64字符串解码为它的原始表示形式。我再也找不到F¸r了。相反,我有Für,甚至F\'fcr。通过这一点,在查看器中显示解码的rtf时,umlaut的表示是错误的。

那么rtf文件的原始编码是什么呢?或者这里出了什么问题?

您可以查看示例文件这里是我得到的基本64编码字符串。

编辑:

我没有编码的代码,但我想我可以重建它。这是我的代码:

代码语言:javascript
复制
string path = "/some/path/ltxt1 Kopie.rtf";
byte[] document = File.ReadAllBytes(path);
string base64string = Convert.ToBase64String(document);
var isoBytes = Convert.FromBase64String(base64string);

File.WriteAllText ("/some/path/sketch.rtf", System.Text.Encoding.GetEncoding("iso-8859-1").GetString(isoBytes));

我试图更改编码,但是使用windows-1252我得到了一个错误(草图:编码名不支持,真正的项目:数组不为空)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-17 10:04:49

您的问题不是文件的编码。如果运行代码并比较结果,则每个文本都是相同的。

您的问题是源文件是ANSI编码的,第二个文件是UTF-8编码的。但是,文本中的RTF指令告诉任何解释RTF的内容,即ANSI编码( ansicpg1252部分)。因此,由于不匹配,它在解码上完全混乱。

解决此问题的最简单方法是确保使用匹配的编码将其写回磁盘:

代码语言:javascript
复制
var iso = Encoding.GetEncoding("ISO-8859-1");
File.WriteAllText("/some/path/sketch.rtf", iso.GetString(isoBytes), iso);

或者,更简单地说:

代码语言:javascript
复制
File.WriteAllBytes("/some/path/sketch.rtf", isoBytes);
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31472492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档