C# 如何识别网站';内容语言如英语、日语、汉语等

C# 如何识别网站';内容语言如英语、日语、汉语等,c#,asp.net,web-crawler,C#,Asp.net,Web Crawler,(我正在开发一个网站来抓取ASP.NET中的其他网站内容。我能够正确获取内容,但如何根据该内容识别使用哪种语言。例如英语、印地语、汉语、日语等。) 我使用了以下代码 HttpWebRequest请求=(HttpWebRequest)HttpWebRequest.Create(TextBox1.Text); request.UserAgent=“A.NET Web爬虫” 如果你说的是“编程语言”,那么你就不能。你可以找到线索,但没有办法确定一个页面是用asp、php还是其他任何东西生成的 如果您不

(我正在开发一个网站来抓取ASP.NET中的其他网站内容。我能够正确获取内容,但如何根据该内容识别使用哪种语言。例如英语、印地语、汉语、日语等。)

我使用了以下代码

HttpWebRequest请求=(HttpWebRequest)HttpWebRequest.Create(TextBox1.Text); request.UserAgent=“A.NET Web爬虫”

如果你说的是“编程语言”,那么你就不能。你可以找到线索,但没有办法确定一个页面是用asp、php还是其他任何东西生成的


如果您不是在谈论编程语言,而是英语/西班牙语/法语等,那么请忽略我的回答(但要澄清您的问题)。

嗯,有些网页的html元素中包含“lang”或“xml:lang”属性。例如:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title></title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
</head>
<body>

</body>
</html>

在本例中,属性“lang”和“xml:lang”被设置为“en”(即英语)。此外,一些服务器可能会设置“Content Language”标头,您可以检查该标头的值。(不过,老实说,我还没有看到设置此值的服务器)

但是,这些属性或标题的值可以是任何值,某些服务器和网页甚至不会声明任何语言。但您可能希望搜索和定义的公共语言代码

至于在C#中实现这一点,我承认:我没有多少线索,但我认为WebResponse类有一个名为的属性,您可能想看看

哦,对于像印地语这样的语言,我很确定它们包含该语言特有的字符。在这种情况下,您可以搜索htmlText字符串中的任何一个字符


还有一种简单的方法可以检查htmlText字符串中特定语言的常用词。例如,如果您想知道页面是否为法语,可以搜索“bonjour”等词。

您可以在此处找到:

除了希望创建网页的人在html标记中添加语言标识符或在元标记中指定语言标识符之外,最好的解决方案(这意味着在这两种方法之后)是检查unicode字符代码以查找网页中的一些非英语文本

string text = "あの";
foreach (char c in text)
{
   Console.WriteLine("U+{1:x4}", (int)c);
}
并检查它所处的语言空间

然而,这并不是100%准确,因为在许多语言中存在字符重叠(日语可以相当准确地确定,因为使用平假名/片假名,但随机选择的汉字可能只是日语汉字的一部分,没有平假名或片假名)


通过编程实现这一点的最快方法可能是尽可能缩小语言特定字符集的范围,并首先检查这些字符集,然后进行更稳健的搜索,但其他三个字符集均未通过。

谢谢,我想确定它的英语/汉语/日语是否与此类似。+1即使这对于所有contGoogle Translate API有很好的文档说明如何充分利用这项服务(包括支持的语言列表)-
string text = "あの";
foreach (char c in text)
{
   Console.WriteLine("U+{1:x4}", (int)c);
}