From: Katsumi Yamaoka <yamaoka@jpl.org>
To: 25658@debbugs.gnu.org
Subject: bug#25658: 26.0.50; ELisp part in a mail isn't encoded properly
Date: Fri, 10 Feb 2017 09:56:47 +0900 [thread overview]
Message-ID: <b4m7f4yeucw.fsf@jpl.org> (raw)
In-Reply-To: <b4m7f50ks55.fsf@jpl.org>
On Thu, 09 Feb 2017 11:35:50 +0900, Katsumi Yamaoka wrote:
> In a message draft, an ELisp part containing non-ASCII letters,
> like the following, is not encoded properly.
> <#part type="application/emacs-lisp" disposition=inline>
> (defun mm-shr (handle)
> ...
> ;; Remove "soft hyphens".
> (goto-char (point-min))
> (while (search-forward "" nil t)
> (replace-match "" t t))
> <#/part>
;; Note that "" is a soft hyphen.
What Gnus wants to do is:
(quoted-printable-encode-string
(encode-coding-string "" 'iso-8859-1))
=> "=AD"
However what is actually done is:
(with-temp-buffer
;; `mml-generate-mime-1' does:
(set-buffer-multibyte t)
(insert "")
;; `mm-encode-body' does:
(encode-coding-region (point-min) (point-max) 'iso-8859-1)
;; `mm-encode-buffer' does:
(quoted-printable-encode-region (point-min) (point-max))
(buffer-string))
=> "=3FFFAD"
Hmm.
(with-temp-buffer
(set-buffer-multibyte t)
(insert "")
(encode-coding-region (point-min) (point-max) 'iso-8859-1)
(append (buffer-string) nil))
=> (4194221)
This would probably be the multibyte version of:
(append (encode-coding-string "" 'iso-8859-1) nil)
=> (173)
Doesn't it mean we ought not to use `encode-coding-region'?
Anyway, I think what we should do here would be one of the
following two ways:
(with-temp-buffer
(set-buffer-multibyte t)
(insert "")
(encode-coding-region (point-min) (point-max) 'iso-8859-1)
(set-buffer-multibyte nil)
(quoted-printable-encode-region (point-min) (point-max))
(buffer-string))
=> "=AD"
I'm not sure whether (set-buffer-multibyte nil) above does not do
anything other than converting characters to the unibyte version
one by one. OTOH, this is what I often do:
(with-temp-buffer
(set-buffer-multibyte t)
(insert "")
(insert (prog1
(encode-coding-string (buffer-string) 'iso-8859-1)
(erase-buffer)
(set-buffer-multibyte nil)))
(quoted-printable-encode-region (point-min) (point-max))
(buffer-string))
=> "=AD"
Regards,
next prev parent reply other threads:[~2017-02-10 0:56 UTC|newest]
Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-02-09 2:35 bug#25658: 26.0.50; ELisp part in a mail isn't encoded properly Katsumi Yamaoka
2017-02-10 0:56 ` Katsumi Yamaoka [this message]
2017-02-10 7:51 ` Eli Zaretskii
2017-02-10 17:33 ` Glenn Morris
2017-02-12 23:05 ` Katsumi Yamaoka
2017-02-13 2:03 ` Glenn Morris
2017-02-13 5:44 ` Eli Zaretskii
2017-02-13 8:31 ` Katsumi Yamaoka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=b4m7f4yeucw.fsf@jpl.org \
--to=yamaoka@jpl.org \
--cc=25658@debbugs.gnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.