0

我有一个 rtf 文件,我必须在其中用某些语言特定字符 (UTF8) 进行一些文本替换。替换后,我尝试保存到新的 rtf 文件,但字符设置不正确(奇怪的字符),或者文件保存有所有 rtf 原始代码和所有格式。这是我的代码:

var fs = new FileStream(@"F:\projects\projects\RtfEditor\Test.rtf", FileMode.Open, FileAccess.Read);
//reads the file in a byte[]
var sb = FileWorker.ReadToEnd(fs);
var enc = Encoding.GetEncoding(1250);
//var enc = Encoding.UTF8;
var sbs = enc.GetString(sb);
var sbsNew = sbs.Replace("#test/#", "ă î â șșțț");
//first writting aproach
var fsw = new FileStream(@"F:\projects\projects\RtfEditor\diac.rtf", FileMode.Create, FileAccess.Write);                                     
fsw.Write(enc.GetBytes(sbsNew), 0, enc.GetBytes(sbsNew).Length);
fsw.Flush();
fsw.Close();

在这种方法中,结果文件是正确的,但字符“șșțț”显示为“????”。

//second writing aproach
using (StreamWriter sw = new StreamWriter(fsw, Encoding.UTF8))
{
    sw.Write(sbsNew);
    sw.Flush();
}

在这种方法中,结果文件是一个 rtf 文件,但所有 rtf 原始代码和格式以及特殊字符都被正确保存(șșțț 显示正确,没有更多????)

4

1 回答 1

1

RTF 文件只能直接包含 7 位字符。其他所有内容都需要编码为转义序列。更详细的信息可以在例如这篇 Wikipedia 文章中找到。

于 2013-02-22T20:34:44.917 回答