从文本框复制后,重音字符无法正确显示

时间:2012-09-21 07:09:18

标签: c# wpf

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

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

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

用HTML数据格式正确显示重音字符的方法吗?

3 个答案:

答案 0 :(得分:1)

设置正确的编码? UTF-8 / Unicode / ...? 另请查看以下主题:How to convert a Unicode character to its ASCII equivalent

答案 1 :(得分:1)

This Link解决了整个问题也很好解释。

答案 2 :(得分:0)

DataFormats.Html specification表示它以UTF-8编码。但是.NET 4 Framework中存在一个较低的错误,它实际上读作UTF-8为 Windows-1252

你会得到一些错误的编码,导致有趣/不好的角色如 'A', 'A€¹','A ' 'å½', 'Å¡',' A '“, '¾', 'A', 'A', '¡',' A¢ ”, 'A£', 'å¤', 'A¥', 'Â|', '§', 'A', 'A©'

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

此专用网站的详细说明 Debugging Chart Mapping Windows-1252 Characters to UTF-8 Bytes to Latin-1 Characters

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

此外,Chrome会添加Apple-converted- *字符,例如从剪辑中显示为“”,但要删除claim

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