我的Google云端硬盘根目录中有两个文件夹 - 拉丁语和非拉丁语(西里尔语)名称:
当我使用
搜索Google云端硬盘根目录时String query = "'root' in parents and title='Archive' and trashed=false";
drive.files().list().setQ(query).execute()
它为我提供了Archive
文件夹的元数据,如下图所示:
但如果我将查询字符串更改为'root' in parents and title='Архив' and trashed=false
(使用西里尔文件夹名称),它什么都不给我:
我通过以下库使用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
会返回正确答案!
答案 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的限制。请使用英文字母以确保查询始终有效。