Python readline和UTF-8
我尝试将raw_input()与readline和utf-8编码一起使用(在OSX 10.6.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会以某种方式对此进行过滤 然后,我使用
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中…