# HG changeset patch # User Kenichi Handa # Date 1143093063 0 # Node ID 69cdb1e84c383ace84cda6eb117d9bc39132334b # Parent 5124de9058c1e47e45a20926affd3e2aece62f24 (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. diff -r 5124de9058c1 -r 69cdb1e84c38 lisp/gnus/rfc2231.el --- 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