как написать символ `é` в файле rft? - PullRequest
0 голосов
/ 22 мая 2019

Мне нужно записать строку из c# в файл rtf, но возникают странные проблемы.
Для записи текста я просто использую

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

body - строковая переменная,который заполняется из столбца varchar из базы данных.

Проблема с символом é, который неправильно отображается на WordPad при открытии файла следующим образом

enter image description here

Если яоткройте файл в блокноте, я вижу это

(één schade gevonden -> ander dossier)

Так что по какой-то темной причине WordPad решил показать символ é все запутано, как это.

Я попытался записать файл какUTF8 или другие unicode кодировки, но тогда WordPad отказался видеть этот файл как rtf и просто показывает простой текст со всеми тегами

Я также посмотрел эту страницугде он говорит мне написать тег типа \uXXX?, где XXX должен быть числом, определяющим Unicode UTF-16 code unit number.
Но я не могу найти, какое число использовать, или какой-либо хороший пример того, как это сделать.

На самом деле, я даже не уверен, что если он связан с юникодом, то символ é - это даже не тот персонаж, который нуждается в юникоде в моем уме, может быть неправильным с курса.

В любом случае, кто-нибудь делаетзнает, как решить эту проблему?
Мне просто нужен способ, чтобы wordpad не испортил символ é на дисплее и на печати. ​​

1 Ответ

1 голос
/ 22 мая 2019

Проблема заключалась в том, что я неправильно закодировал файл 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); 
...