防止C#Rich Text Box将亚洲字符转换为十六进制

时间:2016-04-08 20:14:38

标签: c# hex translation richtextbox non-latin

我有一个简单的C#Windows窗体应用程序,可以将富文本(从PDF或DOC粘贴)转换为RTF标记。但是每当我粘贴这样的亚洲字符时: ありがとうございました RTF标记将字符转换为十六进制等效,如下所示: \'82\'a0\'82\'e8\'82\'aa\'82\'c6\'82\'a4\'82\'b2\'82\'b4\'82\'a2\'82\'dc\'82\'b5\'82\'bd

任何人都知道是否可以阻止这种情况并让RTF标记保留实际的亚洲字符?我知道它在理论上是可行的,因为如果我将实际字符粘贴到RTF标记窗口中,它们就不会被转换。

这里的每个请求是将RTF文本推送到纯文本字段的实际代码...这是亚洲字符转换的点:

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

如果有人想进一步了解应用程序的来源: https://github.com/cemerson/RTFMarkupHelper

相关/可能重复:

1 个答案:

答案 0 :(得分:-1)

它保留了亚洲人物。十六进制编码未在RTF spec使用的ANSI编码中直接表示的unicode值。在“保存RTF”按钮下添加以下代码,您将能够将文件另存为.rtf文件,然后在wordpad / 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();
        }
    }