我正在尝试通过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,你能告诉我为什么它不能转换成日文字符吗?
答案 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打开页面,则可以看到响应的标题。
正如您在图片中看到的,响应是使用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");