[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#25420: Unknown encoding 8bit;; defaulting to 8bit
From: |
Katsumi Yamaoka |
Subject: |
bug#25420: Unknown encoding 8bit;; defaulting to 8bit |
Date: |
Thu, 12 Jan 2017 09:07:43 +0900 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/26.0.50 (i686-pc-cygwin) |
On Thu, 12 Jan 2017 00:44:28 +0800, 積丹尼 Dan Jacobson wrote:
> A mail that contains this header
> Content-Transfer-Encoding: 8bit;
> causes Gnus to issue the following warning:
> Unknown encoding 8bit;; defaulting to 8bit
> This means that Gnus doesn't know the encoding method named:
> 8bit;
> Note that this is not "8bit", but "8bit;".
I found it in a mail that Dan Jacobson sent to me as an example.
> This is due to a bug of a certain mail software. Gnus does no bad.
> But it is easy and harmless to make Gnus fix it, so, I think we had
> better do something like the above workaround if it generally happens.
A partial[1] patch is below. `ietf-drums-strip' is an aliasee
of `mail-header-strip' that the following modules use in Emacs:
lisp/gnus/gnus-art.el
lisp/gnus/gnus-sum.el
lisp/gnus/mm-decode.el
lisp/gnus/nndoc.el
lisp/mh-e/mh-mime.el
The purpose of it is all to clean up a string value of
the Content-Transfer-Encoding header of a mail. So, we can make
`ietf-drums-strip' remove some garbage, such as ";", in addition
to comments and whitespace. However, other programs outside of
Emacs might be using it for different purposes. This is why I
added the new function `mail-header-strip-cte' that is assumed
to be exclusively used for cleaning up C-T-E string.
[1] When I install the patch, I will replace `mail-header-strip'
in the modules listed above with `mail-header-strip-cte' as well.
Regards,
--- lisp/mail/ietf-drums.el~ 2017-01-04 22:16:46 +0000
+++ lisp/mail/ietf-drums.el 2017-01-11 23:18:33 +0000
@@ -171,8 +171,21 @@
(defun ietf-drums-strip (string)
"Remove comments and whitespace from STRING."
(ietf-drums-remove-whitespace (ietf-drums-remove-comments string)))
+(defun ietf-drums-remove-garbage (string)
+ "Remove some gabage from STRING."
+ (while (string-match "[][()<>@,;:\\\"/?=]+" string)
+ (setq string (concat (substring string 0 (match-beginning 0))
+ (substring string (match-end 0)))))
+ string)
+
+(defun ietf-drums-strip-cte (string)
+ "Remove comments, whitespace and gabage from STRING.
+STRING is assumed to be a string that is extracted from
+the Content-Transfer-Encoding header of a mail."
+ (ietf-drums-remove-garbage (inline (ietf-drums-strip string))))
+
(defun ietf-drums-parse-address (string)
"Parse STRING and return a MAILBOX / DISPLAY-NAME pair."
(with-temp-buffer
(let (display-name mailbox c display-string)
--- lisp/mail/mail-parse.el~ 2017-01-04 22:16:46 +0000
+++ lisp/mail/mail-parse.el 2017-01-11 23:13:51 +0000
@@ -51,2 +51,3 @@
(defalias 'mail-header-strip 'ietf-drums-strip)
+(defalias 'mail-header-strip-cte 'ietf-drums-strip-cte)
(defalias 'mail-header-get-comment 'ietf-drums-get-comment)