当前位置: 首页 > 面试题库 >

使Emacs在Python交互模式下使用UTF-8

苏高远
2023-03-14
问题内容

当我从Mac OS的Terminal.app启动Python时,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?

编辑:由于我没有代表来编辑接受的答案,因此这正是在Aquaemacs 1.6,Mac OS 10.5.6上对我有用的方法。

在python-mode-hook中,我添加了这一行

(setenv "LANG" "en_GB.UTF-8")

显然,Mac OS需要“ UTF-8”,而dfa说Ubuntu需要“ UTF8”。

另外,我必须通过执行Cx 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-c\C-z" 'py-shell)
        (setq outline-regexp "def\\|class ")
        (setenv "LANG" "en_GB.UTF-8"))) ; <-- *this* line is new

问题答案:

检查您的环境变量:

$ 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")


 类似资料:
  • 问题内容: 我以为Python交互模式下的显示总是等效的,但是事实并非如此。这是语言功能还是我缺少什么?谢谢 问题答案: 是的,此行为是故意的。 来自Python文档 7.1。表达陈述 Expression语句(通常是交互式地)用于计算和写入值,或(通常)用于调用过程(一个不返回有意义结果的函数;在Python中,过程返回value )。表达式语句的其他用法是允许的,有时是有用的。表达式语句的语法

  • 原文:Using matplotlib in a python shell 警告 该页面的内容已严重过时。 默认情况下,matplotlib 将绘图延迟到脚本结束,因为绘图可能是开销大的操作,并且你可能不想在每次更改单个属性时更新绘图,而是只在所有属性更改后更新一次。 但是在 python shell 中工作时,通常需要用每个命令更新绘图,例如,在更改xlabel()或一行的标记样式之后。 虽然这

  • 问题内容: 如何 使用文件输入 模拟python交互式会话并保存抄本?换句话说,如果我有一个文件: 我想得到看起来像这样(省略python横幅): 我尝试将stdin喂入python,twitter的建议是“ bash脚本”,没有详细信息(在bash中使用script命令播放,没有乐趣)。我觉得应该很容易,但我缺少一些简单的东西。我需要使用或编写解析器吗? Python或ipython解决方案就可

  • 1.8. 使用 Python 的交互 Shell 既然我们已经安装了 Python , 那么我们运行的这个交互shell是什么东西呢? Python 扮演着两种角色。 首先它是一个脚本解释器, 可以从命令行运行脚本, 也可以在脚本上双击, 象运行其他应用程序一样。它还是一个交互 shell, 可以执行任意的语句和表达式。 这一点对调试、快速组建和测试相当有用。我甚至知道一些人把 Python 的交

  • 问题内容: 只是想知道,是否有可能单独使用PHP创建一个交互式shell。我的意思是您在数据库,python等方面拥有类似的东西。 如果是,怎么办? 问题答案: 是的,有可能。为了进行交互,该程序必须能够等待并从 stdin中 读取用户输入。在PHP中,您可以通过向打开文件描述符来从 stdin中 读取。从一个不同的问题的答案中获得,这是PHP中的交互式用户提示的示例(当然是从命令行运行时): 当

  • 问题内容: 通常,您可以执行Python脚本,例如:,但是如果您处于交互模式,那么如何在文件系统上执行Python脚本呢? 应该可以多次执行该脚本。 问题答案: 使用的execfile(“script.py”),但只对蟒蛇2.x的工作,如果你使用的是3.0试试这个

  • 问题内容: 我想编写一个程序(在Windows 7的Python 3.x中),通过ssh在远程shell上执行多个命令。在查看了paramikos的功能之后,我意识到它不适合我的用例(因为在执行命令后通道被关闭了),因为这些命令取决于环境变量(由先前的命令设置),并且不能被合并为一个调用它们,因为它们将在程序中的不同时间执行。 因此,我想在同一通道中执行命令。我研究的下一个选项是使用paramik

  • 有没有办法只使用Docker Compose在容器中启动一个交互式shell?我在我的docker-compose.yml: 当我使用docker-compose up启动这个容器时,它会立即退出。是否有任何标志可以添加到命令中,或者作为的附加选项来启动交互式shell? 我知道有本机docker命令选项来实现这一点,只是好奇是否也可以只使用docker Compose。