Сделать Emacs использовать UTF-8 с интерактивным режимом Python
когда я запускаю Python с терминала Mac OS.app, python распознает кодировку как UTF-8:
$ python3.0
Python 3.0.1 (r301:69556, May 18 2009, 16:44:01)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.encoding
'UTF-8'
это работает то же самое для python2.5.
но внутри Emacs кодировка-US-ASCII.
Python 3.0.1 (r301:69556, May 18 2009, 16:44:01)
[GCC 4.0.1 (Apple Inc. build 5465)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.stdout.encoding
'US-ASCII'
как заставить Emacs общаться с Python, чтобы sys.stdout знает использовать UTF-8?
Edit: поскольку у меня нет репутации для редактирования принятого ответа, вот именно то, что сработало для меня на Aquaemacs 1.6, Mac OS 10.5.6.
в python-mode-hook я добавил строку
(setenv "LANG" "en_GB.UTF-8")
по-видимому, Mac OS требует "UTF-8", в то время как dfa говорит, что Ubuntu требует"UTF8".
кроме того, мне пришлось установить кодировку ввода/вывода, выполнив C-x RET p, а затем дважды набрав "utf-8". Наверное, мне стоит выяснить, как установить это навсегда.
спасибо dfa и Jouni за коллективную помощь мне найти ответ.
вот мой последний python-mode-hook:
(add-hook 'python-mode-hook
(lambda ()
(set (make-variable-buffer-local 'beginning-of-defun-function)
'py-beginning-of-def-or-class)
(define-key py-mode-map "C-cC-z" 'py-shell)
(setq outline-regexp "def|class ")
(setenv "LANG" "en_GB.UTF-8"))) ; <-- *this* line is new
1 ответов
проверьте переменные среды:
$ LANG="en_US.UTF8" python -c "import sys; print sys.stdout.encoding"
UTF-8
$ LANG="en_US" python -c "import sys; print sys.stdout.encoding"
ANSI_X3.4-1968
в вашем крюке python попробуйте:
(setenv "LANG" "en_US.UTF8")