当我用阿拉伯语抓取网站时如何解决陌生字符的问题?



我想抓取这个网站: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);

引用:

每个开发人员都需要了解的有关编码字符的信息

最新更新