0

文字列をRTF-Stringsに変換するメソッドがあります。

そのために私RichTextBoxはここで説明されている方法で.NETによって提供されるウィッチを使用します:
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のように他の場所で使用すると、間違った文字セットから文字が取得されます。õ代わりに実際に表示される文字セット0のように。

さて、Unicodeが発明された理由がわかりました;)

回避策は、RichTextBox.Textプロパティからのみテキストをコピーすることです。それはUnicodeです。

于 2012-10-31T15:42:17.550 に答える