Subject: bug#25365: 25.1; Coding system for bookmarks and desktop

From: Dmitri Paduchikh <[email-masked]>
Date: Tue, 10 Jan 2017 01:34:18 +0500

Eli Zaretskii <[email-masked]> wrote:

>> From: Dmitri Paduchikh <[email-masked]>
>> Cc: [email-masked]
>> Date: Mon, 09 Jan 2017 22:07:49 +0500
>> 
>> It may be hard to know what is happening if it is designed to happen
>> automatically. So, if you insist on supporting user choice here, please
>> consider the following patch. It adds the check of workability of the chosen
>> codec unless it is given directly by user in which case the usual procedure
>> applies, or the codec is omnipotent. In the case of encodability problems it
>> will fallback to utf-8-emacs.

EZ> With the proposed patch, the fallback utf-8-emacs will happen
EZ> silently, so the user will have no idea that her selected encoding was
EZ> ignored, isn't it so?  If so, I don't think it's a good idea to do
EZ> that, when the user explicitly asks for a particular encoding.

It is a choice between data loss (see below) and using another encoding.
The former seems worse to me.

EZ> Come to think of that, I actually don't understand why anything is
EZ> needed in addition to the current code: if the user-chosen encoding
EZ> cannot safely encode the bookmark file, Emacs will refuse to save
the EZ> file, and will insist on the user providing a safe encoding.

Only when user is specifying encoding through C-x RET c right now. Next
time, when the encoding is chosen automatically this check won't be
done. Try the following experiment: mark some non-ASCII character and
evaluate this form by M-:.

(let ((coding-system-for-write 'us-ascii))
  (shell-command-on-region (region-beginning) (region-end) "od -A n -t x1"))

The output is " 3f". I guess that exact choice of a replacement
character depends on the coding system.

EZ> E.g., set a bookmark in TUTORIAL.ru, and then try saving the
EZ> bookmark file using the Latin-1 encoding. I just tried something
EZ> like that, and the effect was exactly as I expected: Emacs requested
EZ> me to provide another encoding.

Try this in different order. Assuming your patch applied, save bookmarks
using latin-1. Suppose this operation passes successfully and bookmarks
have been saved using latin-1. Then bookmark TUTORIAL.ru and save again
not specifying encoding.

With best regards
Dmitri Paduchikh