Python readline и UTF-8 - PullRequest
       1

Python readline и UTF-8

3 голосов
/ 18 октября 2011

Я пытаюсь использовать 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 справляться с юникодными буквами?

1 Ответ

2 голосов
/ 18 октября 2011

(Повторная публикация в качестве ответа): OSX поставляется с худшим эквивалентом readline, называемым libedit (по причинам лицензирования, он не может сам отправлять readline).

Вы можете сделать easy_install readline, чтобы получить GNU readlineв Python на Mac.

Это также вызывает проблему для IPython, который теперь отображает ужасное предупреждение, если обнаруживает, что libedit используется.

...