Когда я начинаю Python от Mac OS»Terminal.app, питон распознает кодировку как UTF-8:сделать Emacs использовать UTF-8 с Python в интерактивном режиме
$ 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.
В питоне-режиме крюка, я добавил строку
(setenv "LANG" "en_GB.UTF-8")
Видимо, Mac OS требует "UTF8", в то время как DFA говорит, что Ubuntu требует "UTF8".
Кроме того, мне пришлось установить кодировку ввода/вывода, выполнив C-x RET p, а затем дважды набрав «utf-8». Вероятно, я должен узнать, как установить это навсегда.
Спасибо dfa и Jouni за то, что помогли мне найти ответ.
Вот мой последний питон-режим-крюк:
(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-c\C-z" 'py-shell)
(setq outline-regexp "def\\|class ")
(setenv "LANG" "en_GB.UTF-8"))) ; <-- *this* line is new
примечание: на убунту LANG должен быть установлен в en_GB.UTF8, без - – dfa
Спасибо, я исправил свое резюме. –
без черточки на ubuntu? Я всегда использую форму UTF-8, и она работает. – u0b34a0f6ae