From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,RCVD_IN_MSPIKE_H2 autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 21589 invoked from network); 25 Oct 2021 08:20:04 -0000 Received: from lists.gnu.org (209.51.188.17) by inbox.vuxu.org with ESMTPUTF8; 25 Oct 2021 08:20:04 -0000 Received: from localhost ([::1]:51374 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mevD7-0001ZP-Sr for ml@inbox.vuxu.org; Mon, 25 Oct 2021 04:20:01 -0400 Received: from eggs.gnu.org ([2001:470:142:3::10]:53646) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mevD2-0001Xf-Uc for info-gnus-english@gnu.org; Mon, 25 Oct 2021 04:19:56 -0400 Received: from ciao.gmane.io ([116.202.254.214]:60068) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mevD1-0007Og-56 for info-gnus-english@gnu.org; Mon, 25 Oct 2021 04:19:56 -0400 Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mevCx-0006mY-Bq for info-gnus-english@gnu.org; Mon, 25 Oct 2021 10:19:51 +0200 X-Injected-Via-Gmane: http://gmane.org/ To: info-gnus-english@gnu.org From: David Edmondson Subject: Re: gnus-search & imap: always "CHARSET UTF-8" when literal+ is supported Date: Mon, 25 Oct 2021 09:19:46 +0100 Message-ID: References: <87fsstx875.fsf@ericabrahamsen.net> Mime-Version: 1.0 Content-Type: text/plain User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cancel-Lock: sha1:FJ8b4QPM9BIshvtbQrKJDZFNMHs= Received-SPF: pass client-ip=116.202.254.214; envelope-from=gegu-info-gnus-english@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no autolearn_force=no X-Spam_action: no action X-BeenThere: info-gnus-english@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: "Announcements and discussions for GNUS, the GNU Emacs Usenet newsreader \(in English\)" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: info-gnus-english-bounces+ml=inbox.vuxu.org@gnu.org Sender: "info-gnus-english" On Friday, 2021-10-22 at 10:47:42 -07, Eric Abrahamsen wrote: > David Edmondson writes: > >> Using current emacs git head, talking to outlook.office365.com over >> IMAP. >> >> Attempts to use gnus-search always fail with the server reporting: >> >> (("NO" ("BADCHARSET" "(US-ASCII)") "The" "specified" "charset" "is" "not" "supported.")) >> >> Looking at gnus-search.el, `gnus-search-imap-search-command' always >> sends CHARSET UTF-8 if the server supports literal+ (which this one >> does). Sending US-ASCII (or no charset at all) causes the server to >> return the required results in simple test cases. >> >> Is there a way to determine whether a server supports UTF-8 in searches, >> and adjust the command sent accordingly? If not, could the use of UTF-8 >> be controlled with (yet another!) variable? > > A bit of internet research seems to indicate that Exchange can't handle > UTF-8 encoded search strings, and also there's no way to test that in > advance apart from simply seeing if it errors. Awesome! That's also the impression I gained. > I think what this means is that it's impossible to search for non-ascii > text on an Exchange server (can that be true?!). If that's true, then > the imap search command should be using the presence of a multibyte > string as the test for whether to use CHARSET UTF-8 or not. You're not > going to be able to search for a multibyte string, anyway. > > Would you try eval'ling the below, and tell me if it works okay when > searching for a string with no non-ascii characters in it? This works in a few simple tests, yes. Thanks! > Also, when you do get the error message above, how does that present to > the user? Did you have to go digging to find it? I had to dig. The observed behaviour is that no messages match the search. > (cl-defmethod gnus-search-imap-search-command ((engine gnus-search-imap) > (query string)) > "Create the IMAP search command for QUERY. > Currently takes into account support for the LITERAL+ capability. > Other capabilities could be tested here." > (with-slots (literal-plus) engine > (when (and literal-plus > (string-match-p "\n" query)) > (setq query (split-string query "\n"))) > (cond > ((consp query) > ;; We're not really streaming, just need to prevent > ;; `nnimap-send-command' from waiting for a response. > (let* ((nnimap-streaming t) > (call > (nnimap-send-command > "UID SEARCH CHARSET UTF-8 %s" > (pop query)))) > (dolist (l query) > (process-send-string (get-buffer-process (current-buffer)) l) > (process-send-string (get-buffer-process (current-buffer)) > (if (nnimap-newlinep nnimap-object) > "\n" > "\r\n"))) > (nnimap-get-response call))) > (t (nnimap-command "UID SEARCH %s" query))))) dme. -- I've been waiting for so long, to come here now and sing this song.