C# C UTF-8编码问题

C# C UTF-8编码问题,c#,encoding,utf-8,C#,Encoding,Utf 8,我在这里搜索了有关堆栈溢出的帖子,并阅读了JoelOnSoftware关于编码的帖子,现在已经基本掌握了编码问题。但是我遇到了一个问题,一些来自Windows剪贴板的字符编码 可复制的测试是使用IE,从谷歌主页上选择并复制广告程序文本 我正在使用以下C代码将此文本从剪贴板中删除错误检查: uint FormatId = GetRegisteredClipboardFormatId("HTML Format"); IntPtr hHtml = Win32.GetClipboardData(Form

我在这里搜索了有关堆栈溢出的帖子,并阅读了JoelOnSoftware关于编码的帖子,现在已经基本掌握了编码问题。但是我遇到了一个问题,一些来自Windows剪贴板的字符编码

可复制的测试是使用IE,从谷歌主页上选择并复制广告程序文本

我正在使用以下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标记,结果是:

广告节目

我是做错了什么,误解了什么,还是问题出在别处了


谢谢你的帮助

检查HTML代码。有 在广告和节目之间

使用业务解决方案文本尝试您的代码,它将起作用


您很可能需要将nbsp替换为普通空格。

检查HTML代码。有 在广告和节目之间

使用业务解决方案文本尝试您的代码,它将起作用


很可能您需要将nbsp替换为普通空格。

您将UTF-8显示为拉丁语-1或其变体CP1252

谷歌在这句话中使用了一个nbsp,它是c2a0,正好是拉丁语-1

编辑:这里显示的代码是正确的。我认为在显示内容时会出现问题。看起来您的输出是UTF-8,但显示媒体需要拉丁语-1

如果您正在使用console显示,请尝试以下操作:

 Console.OutputEncoding = Encoding.GetEncoding("iso-8859-1");
这将告诉控制台发送拉丁语-1,而不是UTF-8

如果在浏览器中显示文本,请确保网页标记为UTF-8,如

   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

您正在将UTF-8显示为拉丁语-1或其变体CP1252

谷歌在这句话中使用了一个nbsp,它是c2a0,正好是拉丁语-1

编辑:这里显示的代码是正确的。我认为在显示内容时会出现问题。看起来您的输出是UTF-8,但显示媒体需要拉丁语-1

如果您正在使用console显示,请尝试以下操作:

 Console.OutputEncoding = Encoding.GetEncoding("iso-8859-1");
这将告诉控制台发送拉丁语-1,而不是UTF-8

如果在浏览器中显示文本,请确保网页标记为UTF-8,如

   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">

我想这会引出另外两个问题:1。如果编码类知道它接收UTF-8并输出UnicodeUTF-16?字符串,难道它不知道如何将UTF-8中的C2 A0转换为Unicode中的正确表示形式吗?我想我基本上误解了编码问题。去做更多的研究。。。2.我最终将字符串编码回UTF-8,以便在浏览器中呈现。我只是为了便于解析而转换为.NET字符串。有没有更好的方法来解析本机UTF-8编码的文本?太好了!这就成功了-谢谢大家的指点!我想这会引出另外两个问题:1。如果编码类知道它接收UTF-8并输出UnicodeUTF-16?字符串,难道它不知道如何将UTF-8中的C2 A0转换为Unicode中的正确表示形式吗?我想我基本上误解了编码问题。去做更多的研究。。。2.我最终将字符串编码回UTF-8,以便在浏览器中呈现。我只是为了便于解析而转换为.NET字符串。有没有更好的方法来解析本机UTF-8编码的文本?太好了!这就成功了-谢谢大家的指点!