rtfファイルがあり、言語固有の文字(UTF8)でテキストを置き換える必要があります。置換後、新しいrtfファイルに保存しようとしましたが、文字が正しく設定されていない(奇妙な文字)か、ファイルがすべてのrtfrawコードとすべてのフォーマットで保存されています。これが私のコードです:
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生コードとフォーマット、および特殊文字が正しく保存されます(șșțțは正しく表示され、これ以上????)