0

我有一个将字符串转换为 RTF 字符串的方法。

为此,我使用RichTextBox.NET 提供的 wich 它在这里描述的方式:
如何在 C# 中将字符串转换为 RTF?

当我输入ő它返回{\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;
    }
4

1 回答 1

0

rtfBox 的整个 RTF 字符串看起来像这样(等等)

这很好,并且显示正确。但是,您的代码片段没有意义。您不能只取一小部分 RTF 并希望它正确显示。尤其\f0重要的是,选择字符集。在这种情况下,字符集 238,即东欧语言的字符集。请注意 RTF 如何包含\fonttbl分配 f0 的命令。

因此,如果您复制该 RTF 片段并在其他地方使用它,例如在其他使用相同\fonttbl命令初始化的 RTB 中,那么您将从错误的字符集中获得一个字符。就像 charset 0 一样,它确实会显示õ

好吧,现在你知道为什么要发明 Unicode 了;)

解决方法是仅从 RichTextBox.Text 属性复制文本。那是统一码。

于 2012-10-31T15:42:17.550 回答