Mercurial > emacs
changeset 69640:69cdb1e84c38
(rfc2231-decode-encoded-string): Work on unibyte
buffer and then decode the buffer text if necessary.
(rfc2231-encode-string): Be sure to work on multibyte buffer at
first, and after mm-encode-body, change the buffer to unibyte.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Thu, 23 Mar 2006 05:51:03 +0000 |
parents | 5124de9058c1 |
children | f3cbe79b8375 |
files | lisp/gnus/rfc2231.el |
diffstat | 1 files changed, 6 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/lisp/gnus/rfc2231.el Thu Mar 23 01:20:20 2006 +0000 +++ b/lisp/gnus/rfc2231.el Thu Mar 23 05:51:03 2006 +0000 @@ -227,7 +227,7 @@ (let ((coding-system (mm-charset-to-coding-system (match-string 2 string))) ;;(language (match-string 3 string)) (value (match-string 4 string))) - (mm-with-multibyte-buffer + (mm-with-unibyte-buffer (insert value) (goto-char (point-min)) (while (search-forward "%" nil t) @@ -236,9 +236,9 @@ (string-to-number (buffer-substring (point) (+ (point) 2)) 16) (delete-region (1- (point)) (+ (point) 2))))) ;; Decode using the charset, if any. - (unless (memq coding-system '(nil ascii)) - (mm-decode-coding-region (point-min) (point-max) coding-system)) - (buffer-string)))) + (if (memq coding-system '(nil ascii)) + (buffer-string) + (mm-decode-coding-string (buffer-string) coding-system))))) (defun rfc2231-encode-string (param value) "Return and PARAM=VALUE string encoded according to RFC2231. @@ -252,7 +252,7 @@ ;; Don't make lines exceeding 76 column. (limit (- 74 (length param))) spacep encodep charsetp charset broken) - (with-temp-buffer + (mm-with-multibyte-buffer (insert value) (goto-char (point-min)) (while (not (eobp)) @@ -268,6 +268,7 @@ (forward-char 1)) (when charsetp (setq charset (mm-encode-body))) + (set-buffer-multibyte nil) (cond ((or encodep charsetp (progn