2016-04-08 12 views
-3

リッチテキスト(PDFまたはDOCからペースト)をRTFマークアップに変換するシンプルなC#Windowsフォームアプリケーションがあります。私はこのようなアジア言語の文字に貼り付けるたびしかし: ありがとうございました RTFマークアップは、このような彼らの進同等に文字を変換します。それは、これを防止し、RTFマークアップは、実際のアジア言語の文字を保持させることが可能かどう \'82\'a0\'82\'e8\'82\'aa\'82\'c6\'82\'a4\'82\'b2\'82\'b4\'82\'a2\'82\'dc\'82\'b5\'82\'bdC#リッチテキストボックスでアジア言語の文字を16進数に変換できないようにする

誰もが知っています?実際の文字をRTFマークアップウィンドウに貼り付けると変換されないので、理論的には可能です。ここでアプリの

private void rtfBox_TextChanged(object sender, EventArgs e){ 
    plainTextBox.Text = rtfBox.Rtf.ToString(); 
} 

ソースは、誰もがしたい場合:要求ごと

は、ここでは、プレーンテキストフィールドにRTFテキスト...アジア言語の文字が変換され得る点であるプッシュ実際のコードですさらに参照: https://github.com/cemerson/RTFMarkupHelper

関連/重複の可能性:

+0

これをチェックしてください。 http://stackoverflow.com/questions/3446649/richtextbox-rtf-return-unicode-format-or-ansi-format –

+1

「誰でも行動を見たい場合は、ここにアプリケーションを構築する」最小限のコンパイル可能なコードを投稿するここで問題を再現してください。 – Eser

答えて

-1

これは、アジア言語の文字を保持しています。 16進数は、RTF specで使用されるANSIエンコーディングで直接表されていないユニコード値をエンコードします。 "Save RTF"ボタンの下に次のコードを追加すると、ファイルを.rtfファイルとして保存し、ワードパッド/ etcなどで開くことができます。

private void button6_Click(object sender, EventArgs e) 
    { 
     SaveFileDialog sfd = new SaveFileDialog(); 
     sfd.Filter = "RTF File|*.rtf"; 
     sfd.DefaultExt = ".rtf"; 
     if (sfd.ShowDialog() == DialogResult.OK) 
     { 
      FileInfo fi = new FileInfo(sfd.FileName); 
      StreamWriter sw = new StreamWriter(fi.OpenWrite()); 
      sw.Write(textBox.Text); 
      sw.Close(); 
     } 
    } 
+0

私はここにあなたの提案を感謝しますが、私の状況で私は文字が最初に変換されるのを防ぐ必要があります。多分それは不可能でしょうか? –

+0

@ChrisEmerson RTFファイルはエスケープシーケンス以外のUTF-8の完全なユニコードをサポートしていないASCIIでエンコードされています。 Wikipediaの記事の[Character Encoding](https://en.wikipedia.org/wiki/Rich_Text_Format#Character_encoding)セクションでは、これについてかなり説明しています。 – Kateract

+0

それは確かに荒々しく見えますが、私はまだあきらめたくありません。私がバグを犯すのは、私が手作業でアジアの文字をプレーンテキストボックスとrtfテキストボックスに貼り付けることができるため、それらの文字がどちらの場所でも「生きて」いることがわかっています。問題は変換プロセスのようです。私のもう一つの課題は、 "\ u20302"と "\ p20 \ a23 \ e44"のような文字列の違いを理解することです。 とにかく、あなたはうまくいくかもしれませんが、私は長い間希望と少し変わっています。 –

関連する問題