Subject: Re: bug#76993: Init files and UTF-8

From: Eli Zaretskii <[email-masked]>
Date: Thu, 13 Mar 2025 08:54:12 +0200

> From: Stefan Kangas <[email-masked]>
> Date: Wed, 12 Mar 2025 23:00:44 -0700
> 
> Severity: wishlist
> 
> In (info "(emacs) Init Non-ASCII"), we read that:
> 
>        If you want to use non-ASCII characters in your init file, you
>     should put a ‘-*-coding: CODING-SYSTEM-*-’ tag on the first line of
>     the init file, and specify a coding system that supports the
>     character(s) in question.  *Note Recognize Coding::.  This is because
>     the defaults for decoding non-ASCII text might not yet be set up by
>     the time Emacs reads those parts of your init file which use such
>     strings, possibly leading Emacs to decode those strings incorrectly.
> 
> Is this correct?  When I open ~/.emacs.d/init.el on this machine,
> `buffer-file-coding-system`, it is `prefer-utf-8-unix`, and I can't
> recall ever having had a problem with non-ASCII key bindings.

I'm guessing that that's because your system's encoding is UTF-8 to
begin with.

> Is the above only true on some platforms?

What matters is the locale's codeset, not the platform.  Though it is
true that most users of most platforms except Windows use UTF-8 these
days, I know of at least some users of GNU/Linux who still set up
their systems to use non-UTF-8 encoding.

> Should that be noted, or should it be moved to some platform
> specific documentation?

We could do that, but is that worth the hassle?

 . having a coding cookie can do no harm
 . having a coding cookie makes the init file portable and usable from
   several different systems with no subtle problems
 . explaining when this could matter and when it couldn't is not
   simple and could confuse users who do not know enough about locales
   and encodings

> Should the default be changed somehow, such that we always use UTF-8
> when reading the init file?

Why would we want to make such a breaking change, when all we suggest
is to have a coding cookie, in a small minority of cases where init
files bind non-ASCII keys?