【问题标题】:Accented characters are not showing properly after copying from a text box从文本框复制后,重音字符无法正确显示
【发布时间】:2012-09-21 07:09:18
【问题描述】:

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

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

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

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

【问题讨论】:

  • 尝试将字符类型设置为 unicode 而不是 utf8...
  • 嘿,迈克尔,我需要在哪里设置字符类型?转换时?

标签: c# wpf


【解决方案1】:

设置正确的编码? UTF-8/Unicode/... ? 也看看这些主题:How to convert a Unicode character to its ASCII equivalent

【讨论】:

    【解决方案2】:

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

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

    例如,“€”在 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:创建翻译词典并进行搜索和替换。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-01-04
      • 2017-05-08
      • 2016-02-19
      • 1970-01-01
      • 1970-01-01
      • 2017-02-07
      • 2018-10-30
      • 2012-05-13
      相关资源
      最近更新 更多