Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python readline和UTF-8_Python_Macos_Unicode_Readline - Fatal编程技术网

Python readline和UTF-8

Python readline和UTF-8,python,macos,unicode,readline,Python,Macos,Unicode,Readline,我尝试将raw_input()与readline和utf-8编码一起使用(在OSX 10.6.8上) 想象一下下面的片段: import readline while True: try: inp = raw_input('> ') except EOFError: break 除非尝试键入非标准ASCII字母,如“å”或“ä”,否则此选项有效。当执行此操作时,不会写入任何输入,我猜readline会以某种方式对此进行过滤 然后,我使用

我尝试将raw_input()与readline和utf-8编码一起使用(在OSX 10.6.8上)

想象一下下面的片段:

import readline

while True: 
    try:
        inp = raw_input('> ')
    except EOFError:
        break
除非尝试键入非标准ASCII字母,如“å”或“ä”,否则此选项有效。当执行此操作时,不会写入任何输入,我猜readline会以某种方式对此进行过滤

然后,我使用

sys.stdin = codecs.getwriter('utf-8')(sys.stdin)
现在输入“å”和“ä”可以工作了,但readline功能似乎已经不复存在了

关于如何让readline处理unicode字母有什么想法吗?

(作为答案,重新发布):OSX附带了一个与readline相当的名为libedit的低级版本(出于许可原因,它不能发布readline本身)

您可以通过
easy\u install readline
在Mac上获得Python格式的GNU readline


这也会导致IPython出现问题,如果它检测到libedit正在使用,它现在会显示一个丑陋的警告。

我知道OSX附带了与readline相当的劣质版本(出于许可原因)。如果您执行了
easy\u安装readline
并尝试,它会改变什么吗?FWIW,同样的事情在Linux上也适用。不尝试更改输入编码,遵循@ThomasK提示解决了问题。谢谢@lode:您的程序在我的MacOSX(10.7:Lion)上使用标准的Python安装工作。(我的终端使用UTF-8。)你使用的是什么版本的Mac OS X?@EOL:我正在运行10.6.8(雪豹),Python 2.6.1。终端使用UTF-8。似乎这只是由于旧版本的readline模块造成的。很高兴他们修好了!请注意,editline(libedit)只是readline的一个BSD变体,已经出现在4.4BSD中…