Python readline 和 UTF-8
我正在尝试将 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 字母有什么想法吗?
I'm trying to use raw_input() with readline and utf-8 encoding (on OSX 10.6.8).
Imagine the following snippet:
import readline
while True:
try:
inp = raw_input('> ')
except EOFError:
break
This works except when trying to type non standard ASCII letters, say 'å' or 'ä'. When doing this no input is written, I guess readline is filtering this somehow.
I then changed the input encoding using
sys.stdin = codecs.getwriter('utf-8')(sys.stdin)
Now typing 'å' and 'ä' works but it seems the readline functionality is no more.
Any ideas on how to make readline cope with unicode letters?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
(重新发布作为答案):OSX 附带了一个名为 libedit 的 readline 等价物(出于许可原因,它本身无法提供 readline)。
您可以执行
easy_install readline
在 Mac 上的 Python 中获取 GNU readline。这也会给 IPython 带来一个问题,如果它检测到 libedit 正在使用,它现在会显示一个丑陋的警告。
(Reposting as an answer): OSX ships with an inferior equivalent to readline called libedit (for licensing reasons, it can't ship readline itself).
You can do
easy_install readline
to get GNU readline in Python on a Mac.This also causes a problem for IPython, which now displays an ugly warning if it detects that libedit is in use.