emacs テキストモード UTF-8 文字

emacs テキストモード UTF-8 文字

-nwテキストモード(起動オプション)では、Unicode文字を直接表示するためにemacs(バージョン24.4.1)を取得できません。エスケープされた形式で出力さäれます\344。ファイルを保存すると、ISO-8859私のシステムロケールは.evenでエンコードされますen_US.UTF-8

端末自体はUnicode文字を表示できます。外部たとえば、bashではäとなりますä。 (なし)emacs Xアプリケーションでも機能します-nw

私はArch Linux 3.19.3-3でgnome-shell 3.16.0-2を実行していますxterm -u8(同じ結果)。uxterm

localectl出力:

   System Locale: LANG=en_US.UTF-8
       VC Keymap: sv-latin1
      X11 Layout: se
       X11 Model: pc104

locale出力:

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

唯一の問題領域は端末モードのemacsなので、それが問題のようです。どんなアイデアがありますか?

修正する:

~/.emacs:

(prefer-coding-system       'utf-8)
(set-default-coding-systems 'utf-8)
(set-terminal-coding-system 'utf-8)
(set-keyboard-coding-system 'utf-8)

(setq x-select-request-type '(UTF8_STRING COMPOUND_TEXT TEXT STRING))
(custom-set-variables
 ;; custom-set-variables was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 '(ansi-color-names-vector
   ["#2d3743" "#ff4242" "#74af68" "#dbdb95" "#34cae2" "#008b8b" "#00ede1" "#e1e1e0"])
 '(current-language-environment "UTF-8")
 '(custom-enabled-themes (quote (manoj-dark)))
 '(font-use-system-font t)
 '(inhibit-startup-screen t)
 '(tool-bar-mode nil))
(custom-set-faces
 ;; custom-set-faces was added by Custom.
 ;; If you edit it by hand, you could mess it up, so be careful.
 ;; Your init file should contain only one such instance.
 ;; If there is more than one, they won't work right.
 )

ファイル内のすべての行をコメントアウトしようとしましたが、それ以降の結果は同じです。

答え1

ちょっとした調整の終わりにEmacsではなくシステム関連であることがわかりました。 OPで見たように、私のロケールは何とか混乱しているようです。

locale: Cannot set LC_CTYPE to default locale: No such file or directory
locale: Cannot set LC_MESSAGES to default locale: No such file or directory
locale: Cannot set LC_ALL to default locale: No such file or directory

問題を解決するために私がしたことは次のとおりです。

/etc/locale.gen表示されている行のコメントを削除または追加しますen_US.UTF-8 UTF-8。コメントアウトされていない唯一の行であることを確認してください。UTF-8これらのいずれかを使用するには、他の設定でも機能する必要があります。無差別代入方法は次のとおりです。

$ sudo bash -c 'echo en_US.UTF-8 UTF-8 > /etc/locale.gen'

次に、ロケールを作成してシステム構成に保存します。

$ sudo locale-gen
$ sudo bash -c 'locale > /etc/locale.conf'

再起動せずに設定を更新できるかもしれませんが、方法が見つかりませんでした。

関連情報