我有一个简单的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();
}
}