Python readline 和 UTF-8

发布于 2024-12-10 19:10:13 字数 491 浏览 0 评论 0原文

我正在尝试将 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

萌逼全场 2024-12-17 19:10:13

(重新发布作为答案):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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文