[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#2497: 23.0.91; Fails to read UTF-8 on Win2k
From: |
Eli Zaretskii |
Subject: |
bug#2497: 23.0.91; Fails to read UTF-8 on Win2k |
Date: |
Mon, 02 Mar 2009 21:25:58 +0200 |
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: Eli Zaretskii <eliz@gnu.org>, 2497@emacsbugs.donarmstrong.com,
> uwe.siart@tum.de
> Date: Mon, 02 Mar 2009 10:25:45 -0500
>
> So, again, the bug is in the ordering
Actually, the OP was complaining that, even with this ordering, Emacs
23 did TRT for him, and that a recent change broke that. That bug is
fixed now, I believe, so you are talking about a more general problem.
> we have to figure out which code ends up putting latin-1 before utf-8 in
> the coding system priority.
Well, I think this is fairly easy: set-locale-environment does it.
Observe:
(defun set-locale-environment (&optional locale-name frame)
"Set up multi-lingual environment for using LOCALE-NAME.
This sets the language environment, the coding system priority,
the default input method and sometimes other things.
...
(let ((language-name
(locale-name-match locale locale-language-names))
(charset-language-name
(locale-name-match locale locale-charset-language-names))
(default-eol-type (coding-system-eol-type
default-buffer-file-coding-system))
(coding-system
(or (locale-name-match locale locale-preferred-coding-systems)
(when locale
(if (string-match "\\.\\([^@]+\\)" locale)
(locale-charset-to-coding-system
(match-string 1 locale)))))))
...
(when (and (not frame)
coding-system
(not (coding-system-equal coding-system
locale-coding-system)))
>>>>> (prefer-coding-system coding-system)
;; Fixme: perhaps prefer-coding-system should set this too.
;; But it's not the time to do such a fundamental change.
(setq default-sendmail-coding-system coding-system)
(setq locale-coding-system coding-system))))
Even the doc string says that the coding system priority is set
according to the locale's native encoding.