我想抓取这个网站:https://haraj.com.sa
但是当我这样做时,我会得到像这些陌生角色这样的角色
我尝试了这些东西,但对我不起作用:
string str = "مكاتب ادارية للإيجار";
var bytes = Encoding.UTF8.GetBytes(str);
dataGridView.Rows.Add( Encoding.UTF8.GetString(bytes) );
您应该尝试使用 Unicode 进行此类转换。
string str = "مكاتب ادارية للإيجار";
var bytes = Encoding.Unicode.GetBytes(str);
dataGridView.Rows.Add( Encoding.UTF8.GetString(bytes) );
在您的情况下,它更安全,因为 .Net 字符串始终为 Unicode,因此您基本上将 UTF-16 转换为 UTF-8,这可能会导致问题。让我知道这是否适合您。
您看到奇怪字符的原因是由于编码的差异。
从 MSDN:
编码是转换一组 Unicode 字符的过程 转换为字节序列
此外,当您进行网络抓取时,您可以执行以下操作:
string url = @"https://haraj.com.sa/";
WebClient client = new WebClient { Encoding = Encoding.UTF8 };
string html = client.DownloadString(url);
引用:
每个开发人员都需要了解的有关编码字符的信息