2

在网页上有以下字符串

“高通骁龙™ S4”

当我在我的 .net 代码中获取此字符串时,该字符串将转换为“Qualcomm Snapdragon™ S4”

字符“TM”变为 â„¢</p>

我如何将“â„¢”解码回“TM”

更新

以下是使用 webproxy 下载字符串的代码
wc is webproxy

wc.Headers.Add("Accept-Charset", "ISO-8859-1,utf-8");
string html = Server.HtmlEncode(wc.DownloadString(url));
4

1 回答 1

6

您应该首先以正确的编码阅读网页。在这种情况下,您似乎正在阅读Encoding.Default(即可能是 CP1252),并且该页面实际上是 UTF-8。通过阅读Content-Type响应的标头或<meta http-equiv="Content-Type" content='text/html; charset=utf-8'>在内容中查找 a,这应该很明显。

如果事后仍然需要这样做,请使用

var bytes = Encoding.Default.GetBytes(myString);
var correctString = Encoding.UTF8.GetString(bytes);

无论如何,您首先需要知道页面上使用的确切编码以及读取格式错误的字符串。此外,我通常会明确建议不要使用Encoding.Default,因为它的值不是固定的。它只是 Windows 系统上用于非 Unicode 应用程序的遗留编码,也被用作默认的非 Unicode 文本文件编码。它在处理外部资源时不应该有任何位置。

于 2013-08-19T11:23:32.153 回答