C#解码“┢“到”TM“

时间:2013-08-19 11:18:44

标签: c# encoding decoding

在网页上有以下字符串

“Qualcomm Snapdragon™S4”

当我在.net代码中获取此字符串时,字符串转换为“QualcommSnapdragon┢S4“

字符“TM”变为â€

如何解码“┢“返回”TM“

更新

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

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

1 个答案:

答案 0 :(得分:6)

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

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

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

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