2012-07-17 105 views
2

Gmail的imap擴展命令X-GM-RAW允許我在使用ascii查詢字符串時執行搜索。如果在查詢中使用utf-8字符,則imap會返回錯誤的響應。使用Gmail搜索utf-8字符串X-GM-RAW IMAP命令

https://developers.google.com/google-apps/gmail/imap_extensions#extension_of_the_search_command_x-gm-raw

應如何utf-8的輸入字符串進行編碼,使得X-GM-RAW搜索將正常工作。我不想失去靈活性,搜索特定的領域,如「主題」或「rfc833msgid」

感謝

回答

0

IMAP是不是8-bit clean,所以它必須使用多種不同的編碼來表示任何8-位數據。

類的東西文件夾和標籤 IMAP4使用Modified UTF-7表示這些字符。方便的是,修改過的utf7編碼的ascii數據本身編碼,因此通常不需要做任何特殊的處理。

對於消息(包括受試者)的文本被編碼爲Mime words

最後atttachments通常被編碼爲Base64的引用打印

我最好的猜測是,Gmail使用修改UTF7他們的X-GM-RAW查詢。我發現修改後的utf7的最佳參考實現是在IMAPClient python library

希望這有助於!

1

指定CHARSET UTF-8並在文字中發送UTF-8搜索詞。例如,要搜索你好,這是6個字節長在編碼時UTF-8:

A SEARCH CHARSET UTF-8 X-GM-RAW {6} 
+ go ahead 
你好 
* SEARCH 15 
a OK SEARCH completed (Success) 

在這個例子中你實際上在第三行上發送的你好6字節UTF-8編碼。

這適用於接受astring的任何SEARCH關鍵字,包括SUBJECT和HEADER MESSAGE-ID。

+0

我試過這個命令來搜索非ascii字符像日文..但我得到「錯誤的命令無法解析」錯誤。我只是發送6字節的UTF-8編碼的字符串像格式\ xE4 \ xBD \ xA0 \ xE5 \ xA5 \ xBD ..但仍然無法解決thid問題..請讓我知道編碼字符串格式 – 2014-12-30 09:17:02