RIchTextBox Rtf 编码
RIchTextBox Rtf encoding
我在 wpf 中创建了一个 richtextbox,我可以在其中 select 文本并将其 link 到文件或资源。
假设我想将文本 something 添加到文本框中,并将 hyperlink 添加到 D:\cdrréper
附上部分代码:
_link.CommandParameter = path;
_link.NavigateUri = new Uri(path, UriKind.Absolute);
_link.IsEnabled = true;
using (MemoryStream ms = new MemoryStream()) {
TextRange tr = new TextRange(_link.ContentStart, _link.ContentEnd);
tr.Save(ms, DataFormats.Rtf);
richTextBox.Selection.Load(ms, DataFormats.Rtf);
}
加载后富文本框中的当前文本值为
{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset0 Arial;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;\red0\green0\blue255;\red0\green102\blue204;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\cf0 \cf0\ql{\f2 {\ul\cf3\ltrch {\field{\*\fldinst { HYPERLINK "D:\\cdrr'e9per" }}{\fldrslt {something}}}}\li0\ri0\sa75\sb75\fi0\ql\par}
}
}
Hyperlink 来自 RTF 的值是 { HYPERLINK "D:\cdrr'e9per" }。
当我尝试访问该路径时,该路径不起作用,因为无法建立。 é 字符编码不正确。你对我如何解决这个问题有什么建议吗?感谢您的帮助。
在超链接部分需要在'e9 之前有一个\。当我们将 rtf 字符串加载到 TextRange 中时,我们需要将其加载为 Xaml.
tr.Load(ms, DataFormats.Xaml);
我在 wpf 中创建了一个 richtextbox,我可以在其中 select 文本并将其 link 到文件或资源。 假设我想将文本 something 添加到文本框中,并将 hyperlink 添加到 D:\cdrréper
附上部分代码:
_link.CommandParameter = path;
_link.NavigateUri = new Uri(path, UriKind.Absolute);
_link.IsEnabled = true;
using (MemoryStream ms = new MemoryStream()) {
TextRange tr = new TextRange(_link.ContentStart, _link.ContentEnd);
tr.Save(ms, DataFormats.Rtf);
richTextBox.Selection.Load(ms, DataFormats.Rtf);
}
加载后富文本框中的当前文本值为
{\rtf1\ansi\ansicpg1252\uc1\htmautsp\deff2{\fonttbl{\f0\fcharset0 Times New Roman;}{\f2\fcharset0 Arial;}}{\colortbl\red0\green0\blue0;\red255\green255\blue255;\red0\green0\blue255;\red0\green102\blue204;}\loch\hich\dbch\pard\plain\ltrpar\itap0{\lang1033\fs18\f2\cf0 \cf0\ql{\f2 {\ul\cf3\ltrch {\field{\*\fldinst { HYPERLINK "D:\\cdrr'e9per" }}{\fldrslt {something}}}}\li0\ri0\sa75\sb75\fi0\ql\par}
}
}
Hyperlink 来自 RTF 的值是 { HYPERLINK "D:\cdrr'e9per" }。 当我尝试访问该路径时,该路径不起作用,因为无法建立。 é 字符编码不正确。你对我如何解决这个问题有什么建议吗?感谢您的帮助。
在超链接部分需要在'e9 之前有一个\。当我们将 rtf 字符串加载到 TextRange 中时,我们需要将其加载为 Xaml.
tr.Load(ms, DataFormats.Xaml);