我有一个将字符串转换为RTF-Strings的方法。
为此,我使用.NET提供的RichTextBox
,如下所述:
How to convert a string to RTF in C#?
当我输入ő
时,它会返回{\rtf1 {'f5\f1}}
。但这似乎是õ
,因为当我把它放入.rtf文件时,我得到了那个符号。
为什么会这样?我该怎么做才能解决这个问题?
编辑:
以下是我使用它的整个方法:
private static string ConvertToRtf(string text) {
System.Windows.Forms.RichTextBox richTextBox = new System.Windows.Forms.RichTextBox();
richTextBox.Text = text;
int offset = richTextBox.Rtf.IndexOf(@"\f0\fs17") + 8;
int length = richTextBox.Rtf.LastIndexOf(@"\par") - offset;
string result = richTextBox.Rtf.Substring(offset, length).Substring(1);
return result;
}
答案 0 :(得分:0)
rtfBox的整个RTF字符串看起来像这样(etc ..)
这很好并且显示正确。但是你的代码片段没有意义。你不能只是采取一小部分RTF并希望它正确显示。特别是\f0
很重要,它选择了charset。在这种情况下,字符集238是东欧语言的字符集。注意RTF如何包含\fonttbl
命令来分配f0。
因此,如果您复制RTF并在其他地方使用它,就像使用相同\fonttbl
命令 初始化的其他RTB那样,您将获得一个来自错误的charset。就像charset 0一样,确实会显示õ
。
嗯,现在你知道为什么发明了Unicode;)
解决方法是仅复制RichTextBox.Text属性中的文本。这是Unicode。