我想在Windows窗体应用程序中获取YouTube搜索自动填充功能,这适用于英语,它对希伯来语不起作用,我应该选择哪种编码?
string s = webClient.DownloadString(
@"http://suggestqueries.google.com/complete/search?client=firefox&ds=yt&q=" +
System.Net.WebUtility.UrlEncode(textBoxMain.Text));
以下是我下载希伯来语时所看到的一个例子:
[" \ u05DB",[" \ u05DB \ u05E4 \ u05D5 \ u05DC \ u05D4 \ u05E4 \ u05E8 \ u05E7 8"," \ u05DB \ u05E4 \ u05D5 \ u05DC \ u05D4"," \ u05DB \ u05D9 \ u05E4 \ u05EA \ u05D1 \ u05E8 \ u05D6 \ u05DC"," \ u05DB \ u05D3 \ u05E7 \ u05D8 \ u05DF", " \ u05DB \ u05D \ u05D4 \ u05D0 \ u05D4 \ u05E0 \ u05D5"," \ u05DB \ u05D0 \ u05DF"," \ u05DB \ u05E8 \ u05DE \ u05DC \ u05D4"," \ u05DB \ u05E4 \ u05D5 \ u05DC \ u05D4 \ u05E4 \ u05E8 \ u05E7 1"," \ u05DB \ u05D5 \ u05D5 \ u05E8 \ u05EA",& #34; \ u05DB \ u05E9 \ u05D0 \ u05D7 \ u05E8"]]
答案 0 :(得分:0)
由于该结果看起来像JSON格式,我应用JSON反序列化器来获取其对象结构,然后处理结果以获取单词列表。碰巧很好地处理了这些字符串的转换。
我使用JsonConvert class来完成繁重的工作。
这是执行该技巧的代码:
var webClient = new WebClient();
string s = webClient.DownloadString(
@"http://suggestqueries.google.com/complete/search?client=firefox&ds=yt&q="
+ "ירושלים");
// s.Dump("raw"); // LinqPad dump
var words = new List<string>(); // collect all words
// make JObject's out of the string
var json = JsonConvert.DeserializeObject(s); // using Newtonsoft.Json;
// we got an Array, let's process that
foreach(var item in (JArray)json)
{
// single value
if (item is JValue)
{
words.Add((string)item); // add it
}
else if (item is JArray) // another array
{
foreach(var seconditem in item)
{
words.Add((string)seconditem); // add it
}
}
}
您可以将words
列表数据绑定到其中一个控件。
以下是LinqPad中的结果:
从NuGet here获取Newtonsoft.Json类。