Я имею дело с некоторыми строками юникода, которые я кодирую с использованием utf-8 всякий раз, когда мне нужно их отобразить.Таким образом я проверяю, что даже при перенаправлении вывода моего скрипта в файл используется правильная кодировка (я знаю, что есть другие способы сделать это, но это не главное).
ТеперьИногда мне нужно табулировать некоторые данные, и для этого я использую спецификаторы формата, как показано ниже:
def tabulate(uni1, uni2):
print "%-15s,%-15s" % (uni1.encode('utf-8'), uni2.encode('utf-8'))
print '01234567890123456789' # ruler
tabulate(u'HELLO', u'BYE')
tabulate(u'ñññññ', u'BYE')
Эта программа выдаст следующий вывод
01234567890123456789
HELLO ,BYE
ñññññ ,BYE
Как вы можете видетьвторая строка неправильно табулирована.Я предполагаю, что %s
не знает о кодировке строки и плохо вычисляет ее длину.
Есть ли решение этой проблемы?