【发布时间】:2013-01-10 10:18:27
【问题描述】:
我在this post发现了一个类似的问题,但是我的问题不一样,所以值得发新帖。
基本上,我有一个生成文本输出的 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 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;
}
【问题讨论】:
标签: c# windows special-characters clipboard