0

我需要将字符串写入c#文件rtf,但遇到奇怪的问题。
写我只是使用的文本

 string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".rtf";
 System.IO.File.WriteAllText(fileName, body);

varcharbody 是一个字符串变量,它是从数据库的列中填充的。

问题是é这样打开文件时写字板显示错误的字符

在此处输入图像描述

如果我在记事本中打开文件,我会看到这个

(één schade gevonden -> ander dossier)

因此,出于某种黑暗的原因,写字板决定将角色é全部显示为这样。

我尝试将文件编写为UTF8或其他unicode编码,但随后写字板拒绝将此文件视为rtf并仅显示带有所有标签的纯文本

我还查看了这个页面,它告诉我写一个标签 \uXXX?,比如 XXX 应该是一个定义Unicode UTF-16 code unit number.
但我找不到要使用的号码,或者任何关于如何做到这一点的好例子。

实际上我什至不确定它是否与 unicode 相关,这个字符é在我看来甚至不是一个需要 unicode 的字符,当然可能是错误的。

无论如何,有谁知道如何解决这个问题?
我只需要一种方法来避免在显示和打印时wordpad弄乱字符。é

4

1 回答 1

1

问题是我没有RTF正确编码文件。
使用Filburt 提供的这个链接,我设法RTF像这样对文件进行正确编码。

var iso = Encoding.GetEncoding("ISO-8859-1");
string fileName = System.IO.Path.GetTempPath() + Guid.NewGuid().ToString() + ".rtf";
System.IO.File.WriteAllText(fileName, body, iso); 
于 2019-05-22T07:43:02.127 回答