2013-01-10 60 views
0

我在this post中發現了一個類似的問題,但是我的問題是不同的,所以值得一個新的職位。如何使用Windows剪貼板和C複製/粘貼特殊字符#

基本上,我有一個生成文本輸出的WPF/C#應用程序。文本輸出包含特殊'℗'字符的幾個實例。用戶可以點擊一個按鈕,通過電子郵件發送信息,這部分工作正常。用戶可以單擊應用程序中的另一個按鈕將相同的文本輸出複製到剪貼板,這是我遇到問題的地方。我正在使用下面的代碼來複制/粘貼文本。

public void SetClipboardText(string text) 
{ 
    try { Clipboard.SetData(DataFormats.Text, text); } 
    catch (COMException) 
    { 
     MessageBox.Show("The clipboard was inaccessible, please try again later"); 
    } 
} 

public string GetClipboardText() 
{ 
    if (Clipboard.ContainsData("Text")) 
    { 
     try { return Clipboard.GetData(DataFormats.Text) as string; } 
     catch (COMException) 
     { 
      MessageBox.Show("The clipboard was inaccessible, please try again later"); 
     } 
    } 
    return string.Empty; 
} 

當複製的文本被粘貼到任何外部文本編輯應用程序中時,'℗'字符被替換爲'?'字符。在搜索互聯網後,我發現另一篇文章涉及到在複製到剪貼板之前編碼HTML的類似問題。但是,在SetClipboardText方法中將以下代碼行添加爲第一行後,粘貼的'℗'字符現在在輸出中替換爲'â - '。

text = Encoding.GetEncoding(0).GetString(Encoding.UTF8.GetBytes(text)); 

這告訴我,這是一個編碼問題。所以我的問題確實是,'我可以使用哪種字符編碼來成功複製並粘貼'℗'字符?'。正如你可以從這篇文章中的所有'℗'字符中看到的那樣,確實可以使用剪貼板複製和粘貼它們......但是怎麼做?

其他信息:

的「℗」字符來自包括在所有的Windows PC的Arial字體,也可以在「普通文本」字體在Word中找到。在Visual Studio QuickWatch窗口中輸入(int)'℗'之後,我得到了字符的相關整數值8471。

解決方案更新:

感謝@Ilya伊萬諾夫,我已經改變了複製/粘貼代碼下面,現在將複製和粘貼特殊字符成功。

public void SetClipboardText(string text) 
{ 
    try { Clipboard.SetText(text); } 
    catch (COMException) 
    { 
     MessageBox.Show("The clipboard was inaccessible, please try again later"); 
    } 
} 

public string GetClipboardText() 
{ 
    if (Clipboard.ContainsText()) 
    { 
     try { return Clipboard.GetText(); } 
     catch (COMException) 
     { 
      MessageBox.Show("The clipboard was inaccessible, please try again later"); 
     } 
    } 
    return string.Empty; 
} 

回答

4

嘗試使用Clipboard.SetText("℗", TextDataFormat.UnicodeText);而不是Clipboard.SetData。它適用於特殊符號如

我已經執行此代碼LinqPad和從剪貼板粘貼文本到文本編輯器 - 工作正常。

+0

+1非常感謝@Ilya Ivanov,我不敢相信我錯過了!並感謝您的快速響應。 – Sheridan

+0

沒有。很好,它的工作 –

相關問題