My friends have persuaded me to "try again" (about the 5th time in about 12 years) with emacs. I'm currently suffering a little, and need help with emacs + utf-8.

I'm running the 23.3.1 emacs gui on Windows 7 with my own custom keyboard layout (built with MS Keyboard Layout Creator). The layout has a full ISO-8859-1 (Latin-1) character set, plus some additional characters from ISO-8859-9 (Latin-5, ğış etc for Turkish) and ŵ for Welsh (don't know where that one lives).

In my .emacs, I have (blindly) added these lines:

(Update: here's the latest evolving mess:)

;; set up unicode
;; keyboard / input method settings
(setq locale-coding-system 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)
(set-selection-coding-system 'utf-8)
(set-language-environment 'UTF-8) ; prefer utf-8 for language settings
(set-default-coding-systems 'utf-8)
(setq default-buffer-file-coding-system 'utf-8)
(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
(prefer-coding-system       'utf-8)
(setq buffer-file-coding-system 'utf-8-unix)
(setq default-file-name-coding-system 'utf-8-unix)
(setq default-keyboard-coding-system 'utf-8-unix)
(setq default-process-coding-system '(utf-8-unix . utf-8-unix))
(setq default-sendmail-coding-system 'utf-8-unix)
(setq default-terminal-coding-system 'utf-8-unix)

Now, when I enter characters from ISO Latin-1 from the keyboard, they are accepted without problems, but characters from outside Latin-1 are "translated" to an approximate character in Latin-1. Thus, for example, Latin-5 "ğ" gets converted to a plain "g".

Cutting and pasting, however, work fine.

Can anyone tell me what I'm doing wrong? I should like to make everything I do with emacs utf-8 with BOM.


This seems like it was a problem of codepage (and hence specific to Windows) because Emacs internally used old Windows APIs that could only return chars that belong to your codepage (hence Windows turned ğ into a plain g before passing it to Emacs).

AFAIK this is not the case any more in newer Emacsen (we now use the newer APIs which use some kind of Unicode, probably UTF-16).

| improve this answer | |
  • Thank you; I can confirm that my current emacs doesn't suffer from this affliction! – Brent.Longborough Mar 10 '19 at 15:55

My emacs says that set-language-environment takes a string, not a symbol.

(set-language-environment "UTF-8")

Does using utf-16 for the keyboard encoding system work?

| improve this answer | |
  • Sorry, set-language-environment "UTF-8" has no effect, while (set-keyboard-coding-system 'utf-16) gives "error: Unsuitable coding system for keyboard: utf-16" – Brent.Longborough Apr 25 '12 at 9:57
  • 1
    I would guess that you would need to patch emacs to get it working then. There is a windows message called WM_UNICHAR that might help. – fstx Apr 27 '12 at 8:38

on my linux box, I can type greek, french (accents) and spanish (ñ) on emacs with just these lines in my .emacs:

;; Set encoding
(prefer-coding-system 'utf-8)
(setq coding-system-for-read 'utf-8)
(setq coding-system-for-write 'utf-8)
| improve this answer | |
  • Just tried it. Thank you for trying, but it still doesn't accept non-ISO-8859-1 characters like ŵ and ş. – Brent.Longborough Aug 16 '12 at 18:08
  • That is strange, I mean greek is certainly not in ISO-8859-1 right? Are you sure you are using a font that supports these characters? – terdon Aug 16 '12 at 18:23
  • Oh, yes. Cut-and-paste works fine; it's just the direct entry from the keyboard that doesn't work correctly. How do you enter your Greek characters? – Brent.Longborough Aug 16 '12 at 22:20

I added at the begining of my init.el:

(require 'iso-transl)

And it accepts my spanish inputs.

| improve this answer | |
  • Thanks for the tip. Unfortunately, my spanish inputs are already working OK (as is all of ISO-9959-1). When I switch to Turkish (ı, İ, ş, Ş, ğ, Ğ) that emacs misbehaves, with or without iso-transl – Brent.Longborough May 16 '15 at 18:26

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.