2

我正在使用下面的代码从某些控件中复制文本。请注意文本可以是西班牙语或英语。稍后我将在富文本框中显示它。

Clipboard.Clear();
MyDocBodyControl.Range.Copy();
html = Convert.ToString(Clipboard.GetData(DataFormats.Html));

但是当我在富文本框中显示它们时,重音字符没有正确显示。如果我使用任何其他格式Text,那么我得到正确的重音字符。但我必须使用 HTML 格式,因为我有一些样式添加了复制的文本。

有什么方法可以用 HTML 数据格式正确显示重音字符?

4

2 回答 2

1

设置正确的编码?UTF-8/Unicode/... ? 还可以查看这些主题:如何将 Unicode 字符转换为其 ASCII 等效字符

于 2012-09-21T07:43:10.947 回答
1

DataFormats.Html 规范声明它以 UTF-8 编码。但是 .NET 4 Framework 及更低版本中存在一个错误,它实际上读取为 UTF-8 和Windows-1252

你得到分配错误的编码,这会导致有趣/坏的字符,例如'Å','‹','Å'','Ž','Å¡','Å“','ž',' Ÿ','Â','¡','¢','£','¤','Â¥','¦','§','¨',' ©'

例如,“€”在 Windows-1252 中被错误地编码为“€”。

在这个专门的网站上的完整解释 调试图表将 Windows-1252 字符映射到 UTF-8 字节到 Latin-1 字符

但是通过使用转换表,您不会丢失任何 UTF-8 字符。您可以从 DataFormats.Html 获取原始的原始 UTF-8 字符。(注意:Ppm 解决方案在失败时默认为 ASCII,您会丢失编码信息!)

此外,Chrome 添加了 Apple-converted-* 字符,这些字符在剪辑中显示为例如 'Â',但声称已被删除。

Soln:创建翻译词典并进行搜索和替换。

于 2018-01-23T21:28:34.677 回答