Google Drive API V2中setQ(查询)中的非拉丁符号

时间:2017-08-08 08:37:50

标签: android google-drive-api google-drive-android-api drive

我的Google云端硬盘根目录中有两个文件夹 - 拉丁语和非拉丁语(西里尔语)名称:

enter image description here

当我使用

搜索Google云端硬盘根目录时
String query = "'root' in parents and title='Archive' and trashed=false"; 
drive.files().list().setQ(query).execute()

它为我提供了Archive文件夹的元数据,如下图所示:

enter image description here

但如果我将查询字符串更改为'root' in parents and title='Архив' and trashed=false(使用西里尔文件夹名称),它什么都不给我:

enter image description here

我通过以下库使用Google Drive API的 V2

com.google.apis:google-api-services-drive:v2-rev154-1.18.0-rc
com.google.api-client:google-api-client:1.18.0-rc
com.google.api-client:google-api-client-android:1.18.0-rc
com.google.http-client:google-http-client:1.18.0-rc
com.google.http-client:google-http-client-gson:1.18.0-rc

这是一个错误还是我应该对搜索到的名称中的非拉丁字符使用某些编码?如果Google最后在他们的文档中提到它的话??

更新V3 问题仍然存在。检查以下libs:

com.google.apis:google-api-services-drive:v3-rev80-1.22.0
com.google.api-client:google-api-client:1.22.0
com.google.api-client:google-api-client-android:1.22.0
com.google.http-client:google-http-client:1.22.0
com.google.http-client:google-http-client-gson:1.22.0

第二次更新: API Explorer V2的一些研究显示问题是俄语大写字母。如果文件夹名称中至少有一个大写字母:'root' in parents and title='папкА' and trashed=false具有此类文件夹名称的查询不提供任何内容:

{
 "kind": "drive#fileList",
 "etag": "\"iqKjQ5Hr8wRO8SSHNW8KBrJOqxI/skD00QgZZ0FB6U5ufzrrxrFjqyA\"",
 "selfLink": "https://www.googleapis.com/drive/v2/files?q='root'+in+parents+and+title%3D'%D0%BF%D0%B0%D0%BF%D0%BA%D0%90'+and+trashed%3Dfalse",
 "incompleteSearch": false,
 "items": []
}

如果文件夹名称中没有大写字母:'root' in parents and title='папки' and trashed=false查询返回带有文件夹元数据的正确json。 V3 也是如此。 因此问题出在Drive Server

第三次更新:查询'root' in parents and title contains 'папкА' and trashed=false会返回正确答案!

1 个答案:

答案 0 :(得分:0)

对于您的用例,我在Drive API version 3 Try-it中尝试了拉丁符号,我认为它有效。

所以我有一个名为“ɞʚᵷ”的文件夹,我希望这是一个拉丁符号并进行查询。

name contains 'ɞʚᵷ' and mimeType = 'application/vnd.google-apps.folder'

有效!

响应:

{
 "kind": "drive#fileList",
 "incompleteSearch": false,
 "files": [
  {
   "kind": "drive#file",
   "id": "0Bzgk4zccNwI7TFhPLUpGdmlmVVE",
   "name": "ɞʚᵷ",
   "mimeType": "application/vnd.google-apps.folder"
  }
 ]
}

<强>更新: 我已经尝试用俄语命名我的文件夹,就像你正在使用的那个 - “Архив”,我有相同的结果,空的结果。我认为这是Drive的限制。请使用英文字母以确保查询始终有效。