2013-02-22 88 views
0

我有一个rtf文件,其中必须使用某些特定语言字符(UTF8)进行文本替换。替换后,我尝试保存到一个新的RTF文件,但不是字符设置不正确(奇怪的字符)或文件与所有rtf原始代码和所有格式保存。 这里是我的代码:使用utf8字符替换内部字符串后无法写入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(); 

在这种形式给出,结果文件是正确的,但字符“SSTT”显示为“????”。

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

在这种形式给出,结果文件是RTF文件,但所有的rtf原始代码和格式和特殊字符被保存权(SSTT出现correcty,没有更多????)

+0

请不要在问题标题中重复标记。 – 2013-02-22 20:29:23

回答

1

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