Python的readline与UTF-8

3 投票
1 回答
1658 浏览
提问于 2025-04-17 04:33

我正在尝试在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,就会显示一个难看的警告。

撰写回答