无法使用UTF-8获取Web内容

时间:2016-12-14 05:39:35

标签: c# asp.net json encoding utf-8

我正在尝试通过webclient获取字符串,它有日文字符,但它显示了这些字符, ^ p Ǘ 。

var url= "http://www.itmedia.co.jp/im/articles/0609/14/news117.html";

using (var w = new WebClient())
{
   w.Encoding = Encoding.UTF8;
   var htmlData= w.DownloadString(url);
}

json_data的值不显示日文字符。

即使我将其编码为UTF-8,你能告诉我为什么它不能转换成日文字符吗?

3 个答案:

答案 0 :(得分:1)

根据第三行观察源,它以shift-jis编码:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html lang="ja" id="masterChannel-enterprise"><head>
<meta http-equiv="content-type" content="text/html;charset=shift_jis">

答案 1 :(得分:0)

如果您使用Postman打开页面,则可以看到响应的标题。

  

Postman

正如您在图片中看到的,响应是使用gzip压缩的。这可能会导致您看到的混乱响应。

WebClient现在支持自动解压缩gzip,但是it wasn't that way always。 (如果我在Windows 10上的.NET 4.6.2上运行您的代码,我确实得到了正确的结果)可能是您的目标是不支持开箱即用的gzip解压缩的旧版.NET Framework 。链接的帖子应该解决这个问题。

答案 2 :(得分:0)

我将代码从UTF-8更改为shift_jis。

w.Encoding = Encoding.GetEncoding("shift_jis");