2012-09-21 77 views
2

我正在使用以下代碼複製某些控件中的文本。請注意,文本可能是西班牙語或英語。後來我在富文本框中顯示它。從文本框複製後,重音字符顯示不正確

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

但是,當我在豐富的文本框中顯示它們,重音字符不顯示我正在使用的任何其他格式,如Text,然後我得到正確的重音characters.But我必須使用properly.If HTML格式,因爲我有一些樣式可以與複製的文本一起添加。

任何使用HTML數據格式正確顯示重音字符的方法?

+0

嘗試將字符類型設置爲unicode而不是utf8 ... – Tschallacka

+0

Hey Michael我需要設置字符類型嗎?轉換? – Ppm

回答

0

DataFormats.Htmlspecification聲明它使用UTF-8編碼。但是.NET 4 Framework中存在一個錯誤,並且它實際上讀取爲UTF-8,如Windows-1252

您會得到錯誤編碼的分配,這會導致有趣/糟糕的字符,例如:「012」,「 '¾', '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會添加蘋果轉換爲*的字符,例如從剪輯中出現'',但要刪除claim

Soln:創建翻譯字典並搜索和替換。