我有一个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原始代码和格式,并且特殊字符保存正确(şşţţ显示正确,不再是????)