diff options
author | Katsumi Yamaoka <yamaoka@jpl.org> | 2017-02-13 08:30:28 +0000 |
---|---|---|
committer | Katsumi Yamaoka <yamaoka@jpl.org> | 2017-02-13 08:30:28 +0000 |
commit | 4b18ef7ba3dd8aae4f3c3bf931365ef7da883baf (patch) | |
tree | 5a5186bfa41b81395ff6ec909e894a8ee4dbef57 /lisp/gnus | |
parent | ef6132c55fc3174f67766ad92e5e2866ac92b8ff (diff) | |
download | emacs-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.el | 22 |
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) |