python: проблема с печатью коротких строк в кодировке UTF - PullRequest
2 голосов
/ 23 июня 2010

(ниже используется Python 2.6.1)

У меня есть 2 строки:

>>> a = u'\u05e8\u05db\u05e1'
>>> b = u'\u05e8\u05db\u05e1 \u05d4\u05d9\u05d0 \u05de\u05d0\u05d9\u05e8\u05d4 \u05d1\u05e4\u05e0\u05e1'

Я их кодирую:

>>> ua = a.encode('utf-8')
>>> ub = b.encode('utf-8')
>>> ua
'\xd7\xa8\xd7\x9b\xd7\xa1'
>>> ub
'\xd7\xa8\xd7\x9b\xd7\xa1 \xd7\x94\xd7\x99\xd7\x90 \xd7\x9e\xd7\x90\xd7\x99\xd7\xa8\xd7\x94 \xd7\x91\xd7\xa4\xd7\xa0\xd7\xa1'

и попробуйте напечатать:

>>> print ua
רכס
>>> print ub
רכס היא מאירה בפנס

Почему ub печатает на иврите, а ua - нет? ua - это только первые несколько символов ub, поэтому кажется, что длина строки как-то является проблемой, что странно.

(Для справки, возникла попытка разобрать веб-страницу с BeautifulSoup - я не мог сказать, почему некоторые абзацы вышли читабельно, а другие нет.)

1 Ответ

1 голос
/ 23 июня 2010

Должно быть что-то с настройками вашего терминала; ua печатает три ивритских символа на моем терминале (Terminal.app в OS X), точно три самых правых символа ub (Поскольку иврит - это скрипт справа налево, первые три символа - первые три).

Кстати, я пробовал это на Python 2.6.1.

...