Kiedy zacznę Python z Mac OS”Terminal.app, python uznaje, kodowanie jako UTF-8Bądź Emacs używać UTF-8 z Python Interactive trybie
$ 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'
To działa tak samo dla python2.5.
Ale wewnątrz Emacsa kodowanie to 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'
Jak sprawić, aby Emacs komunikował się z Pythonem, aby sys.stdout wiedział, że używa UTF-8?
Edit: Ponieważ nie mam rep do edycji zaakceptowane odpowiedź, tutaj jest dokładnie to, co pracował dla mnie na Aquaemacs 1.6, Mac OS 10.5.6.
W python-mode-hook, dodałem linię
(setenv "LANG" "en_GB.UTF-8")
Najwyraźniej Mac OS wymaga "UTF8", natomiast dfa mówi, że Ubuntu wymaga "UTF8".
Dodatkowo, musiałem ustawić kodowanie wejścia/wyjścia, wykonując C-x RET p, a następnie dwukrotnie wpisując "utf-8". Prawdopodobnie powinienem się dowiedzieć, jak to ustawić na stałe.
Podziękowania dla DFA i Jouniego za pomoc w znalezieniu odpowiedzi.
Oto moja ostateczna 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-c\C-z" 'py-shell)
(setq outline-regexp "def\\|class ")
(setenv "LANG" "en_GB.UTF-8"))) ; <-- *this* line is new
uwaga: na ubuntu LANG musi być ustawione na en_GB.UTF8, bez - – dfa
Dzięki, poprawiłem moje podsumowanie. –
bez kreski na ubuntu? Zawsze używam formularza UTF-8 i działa. – u0b34a0f6ae