阻止C#富文本框将亚洲字符转换为十六进制



我有一个简单的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

相关/可能重复:

  • 将unicode字符的十六进制序列解码为字符串的最佳方法
  • 如何将unicode字符串输出到RTF(使用C#)
  • 如何在C#中将字符串转换为RTF
  • 将RTF特殊字符输出到Unicode
  • 显示亚洲字符(使用Unicode):与使用ExtTextOut相比,在RichEdit控件中显示时字符间距的差异
  • 将Unicode字符串转换为转义的ascii字符串
  • 如何解码C#中的HTML字符
  • 如何编码和解码破碎的中文/Unicode字符

它保留了亚洲字符。十六进制编码的unicode值在RTF规范使用的ANSI编码中没有直接表示。在"保存RTF"按钮下添加以下代码,您就可以将文件保存为.RTF文件,然后在wordpad等中打开它。

    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();
        }
    }

相关内容

  • 没有找到相关文章