OneDrive OData 4使用UTF8字符过滤搜索结果

时间:2017-07-07 06:53:04

标签: odata onedrive

我正在尝试从OneDrive Search API过滤搜索内容。这是没有过滤器的请求,其中原始查询关键字是中英字典,其UTF-8编码值为%25E4%25B8%25AD%25E8%258B%25B1%25E5%25AD%2597%25E5%2585%25B8

没有过滤器的请求就是这样。

  

https://api.onedrive.com/v1.0/drive/root:%2F:/view.search?q=%25E4%25B8%25AD%25E8%258B%25B1%25E5%25AD%2597%25E5%2585%25B8&access_token= $的access_token

用例是在keyword中找到匹配的name,因此我需要添加filter=contains(name,'$keyword')之类的过滤器。

过滤器的相应请求是

  

https://api.onedrive.com/v1.0/drive/root:%2F:/view.search?q=%25E4%25B8%25AD%25E8%258B%25B1%25E5%25AD%2597%25E5%2585%25B8&filter=contains%28name%2C%27%255Cu4E2D%255Cu82F1%255Cu5B57%255Cu5178%27%29&access_token= $的access_token

第一个请求将为我提供ascii和非ascii字符的正确结果,但第二个请求仅为ascii字符提供正确的结果,并且不适用于url编码的UTF-8字符(仅返回空结果)。

我也尝试过这个post的编码,但它们也不起作用。

这是OneDrive中的错误还是我对$filter使用了错误的编码类型?

1 个答案:

答案 0 :(得分:1)

使用它:

urlFilter += ` and indexof(Name,'` + encodeURIComponent(this.Name) + `') gt -1`;
  

this.Name来自我的输入。

从我的工作项目中复制。