Python的readline与UTF-8
我正在尝试在OSX 10.6.8上使用raw_input()结合readline和utf-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字母呢?
1 个回答
2
(重新发布作为回答):OSX自带一个比readline差的替代品,叫做libedit(因为授权原因,它不能直接使用readline)。
你可以通过运行 easy_install readline
来在Mac上为Python安装GNU readline。
这也给IPython带来了问题,如果它发现正在使用libedit,就会显示一个难看的警告。