6

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.

6

4 Answers 4

1

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).

1
  • Thank you; I can confirm that my current emacs doesn't suffer from this affliction! Mar 10, 2019 at 15:55
0

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?

2
  • 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" Apr 25, 2012 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, 2012 at 8:38
0

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)
3
  • Just tried it. Thank you for trying, but it still doesn't accept non-ISO-8859-1 characters like ŵ and ş. Aug 16, 2012 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, 2012 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? Aug 16, 2012 at 22:20
0

I added at the begining of my init.el:

(require 'iso-transl)

And it accepts my spanish inputs.

1
  • 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 May 16, 2015 at 18:26

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .