【发布时间】:2009-09-26 20:20:52
【问题描述】:
我在 Stack Overflow 上搜索过帖子,并阅读了 JoelOnSoftware 关于编码的帖子,现在对编码问题有了基本的了解。但是我遇到了来自 Windows 剪贴板的一些字符编码的问题。
可重现的测试是使用 IE 并从 Google 主页中选择并复制“Advertising Programs”文本。
我正在使用以下 C# 代码从剪贴板中提取此文本(已删除错误检查):
uint FormatId = GetRegisteredClipboardFormatId("HTML Format");
IntPtr hHtml = Win32.GetClipboardData(FormatId);
uint DataSize = Win32.GlobalSize(hHtml);
byte[] HtmlData = new byte[DataSize];
IntPtr pData = Win32.GlobalLock(hHtml);
Marshal.Copy(pData, HtmlData, 0, (int)DataSize);
Win32.GlobalUnlock(hHtml);
剪贴板的 HTML 数据应该是 UTF-8 编码的,所以我使用下面的方法将数据转换为字符串:
string Content = Encoding.UTF8.GetString(HtmlData);
但是,忽略周围的 HTML 标记,结果是:
“广告计划”
是我做错了什么,误解了什么,还是问题出在其他地方?
感谢您的帮助!
【问题讨论】: