summaryrefslogtreecommitdiff
path: root/lisp/gnus
diff options
context:
space:
mode:
authorKatsumi Yamaoka <yamaoka@jpl.org>2017-02-13 08:30:28 +0000
committerKatsumi Yamaoka <yamaoka@jpl.org>2017-02-13 08:30:28 +0000
commit4b18ef7ba3dd8aae4f3c3bf931365ef7da883baf (patch)
tree5a5186bfa41b81395ff6ec909e894a8ee4dbef57 /lisp/gnus
parentef6132c55fc3174f67766ad92e5e2866ac92b8ff (diff)
downloademacs-4b18ef7ba3dd8aae4f3c3bf931365ef7da883baf.tar.gz
Fix non-ASCII text encoding (bug#25658)
* lisp/gnus/mm-bodies.el (mm-encode-body): Fix non-ASCII text encoding (bug#25658).
Diffstat (limited to 'lisp/gnus')
-rw-r--r--lisp/gnus/mm-bodies.el22
1 files changed, 15 insertions, 7 deletions
diff --git a/lisp/gnus/mm-bodies.el b/lisp/gnus/mm-bodies.el
index 66b9ebd0cfc..d773289722f 100644
--- a/lisp/gnus/mm-bodies.el
+++ b/lisp/gnus/mm-bodies.el
@@ -68,14 +68,14 @@ Valid encodings are `7bit', `8bit', `quoted-printable' and `base64'."
(declare-function message-options-set "message" (symbol value))
(defun mm-encode-body (&optional charset)
- "Encode a body.
-Should be called narrowed to the body that is to be encoded.
+ "Encode whole buffer's contents.
+Buffer's multibyteness will be turned off when encoding takes place.
If there is more than one non-ASCII MULE charset in the body, then the
list of MULE charsets found is returned.
If CHARSET is non-nil, it is used as the MIME charset to encode the body.
If successful, the MIME charset is returned.
If no encoding was done, nil is returned."
- (if (not (mm-multibyte-p))
+ (if (not enable-multibyte-characters)
;; In the non-Mule case, we search for non-ASCII chars and
;; return the value of `mail-parse-charset' if any are found.
(or charset
@@ -93,8 +93,12 @@ If no encoding was done, nil is returned."
(save-excursion
(if charset
(progn
- (encode-coding-region (point-min) (point-max)
- (mm-charset-to-coding-system charset))
+ (insert
+ (prog1
+ (encode-coding-string (buffer-string)
+ (mm-charset-to-coding-system charset))
+ (erase-buffer)
+ (set-buffer-multibyte nil)))
charset)
(goto-char (point-min))
(let ((charsets (mm-find-mime-charset-region (point-min) (point-max)
@@ -110,8 +114,12 @@ If no encoding was done, nil is returned."
(t
(prog1
(setq charset (car charsets))
- (encode-coding-region (point-min) (point-max)
- (mm-charset-to-coding-system charset))))
+ (insert
+ (prog1
+ (encode-coding-string (buffer-string)
+ (mm-charset-to-coding-system charset))
+ (erase-buffer)
+ (set-buffer-multibyte nil)))))
))))))
(defun mm-long-lines-p (length)