我能够成功地嵌入HTML文本复制到剪贴板(感谢迈克失速的.NET调试博客)并粘贴到Outlook电子邮件的正文。
然而,“特”的Unicode字符没有得到粘贴在正确使用Word.Selection的PasteAndFormat(),PasteSpecial的(),或过去的()方法。 一切都完美的作品,除非我有这样的文字:“噢,我的上帝”。
粘贴()操作之前,我可以得到剪贴板中的文本,并看到正确的文本已投入缓冲区,我知道字体支持这些字符,因为我可以做一个复制和粘贴到电子邮件正文中嵌入HTML之后我的代码执行(和它看起来不错),但我似乎无法与这些“特殊字符”()文本粘贴到Word.Selection。 我使用C#,Visual Studio 2010中,并展望2010年,仅供参考。
预先感谢帮助。
-Eric
我认为最简单的答案是,以确保您所有逃逸非ASCII字符的HTML。 这只是避免了潜在的问题是Unicode字符数据的复制/粘贴。
我不知道你是如何构建HTML下手,但所有文字和属性值将需要使用下面的方法进行编码。
public static string HtmlEncode(string text, bool isAttribute)
{
if (text == null)
return null;
StringBuilder sb = new StringBuilder(text.Length + 100);
int len = text.Length;
for (int i = 0; i < len; i++)
{
char ch = text[i];
switch (ch)
{
case '\r':
case '\n':
if (isAttribute)
goto default;
sb.Append(ch);
break;
case '<':
sb.Append("<");
break;
case '>':
sb.Append(">");
break;
case '&':
sb.Append("&");
break;
default:
if (ch < 32 || ch > 127 || ch == '\'' || ch == '"')
{
sb.Append("&#");
sb.Append(((int)text[i]).ToString(CultureInfo.InvariantCulture));
sb.Append(";");
}
else
sb.Append(text[i]);
break;
}
}
return sb.ToString();
}
文章来源: How can I get special Unicode characters to appear when Pasting the Clipboard into an Outlook Email?