0

我在这篇文章中发现了一个类似的问题,但我的问题不同,所以值得一个新的帖子。

基本上,我有一个生成文本输出的 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 中的“普通文本”字体中找到。在(int)'℗'Visual Studio QuickWatch 窗口中输入后,我得到了字符的相关整数值 8471。

解决方案更新:

感谢@Ilya Ivanov,我已将复制/粘贴代码更改为以下代码,现在可以成功复制和粘贴特殊字符。

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

1 回答 1

5
于 2013-01-10T10:22:29.213 回答