Найти - Пользователи
Полная версия: Перекодировка списка
Начало » Python для новичков » Перекодировка списка
1
Panter7777
Всем добрый день!
Вот столкнулся с проблемкой.
Вытягиваю значения из базы(cp1251) русские символы,
и весь рузльтат помещаю в список
self.users = []
for us in infos_u:
us.fio.decode("cp1251").encode("utf-8")
self.users.append(us.fio)
и вивожу:

вот что выходит:
['\xce\xe2\xf7\xe8\xed\xed\xe8\xea\xee\xe2', '\xd2\xe5\xf0\xe0\xe2\xf1\xea\xe8\xe9'....]
Как правильно перекодировать в utf-8???
basist
a = "\xce\xe2\xf7\xe8\xed\xed\xe8\xea\xee\xe2 \xd2\xe5\xf0\xe0\xe2\xf1\xea\xe8\xe9"
a.decode("cp1251").encode("utf-8")
print(a)
Овчинников Теравский
o7412369815963
перекодировка не сохраняется, надо так:
for us in infos_u:
a = us.fio.decode("cp1251").encode("utf-8")
self.users.append(a)
print ' '.join( self.users )
basist
но это в консоли результат.. как в приложении будет неизвестно… вчера была проблема похожая, но только и в базе был утф-8 и файл сохранен в утф-8, а все равно кракозябры выдавал.. в моем случае помогло
MyDB = MySQLdb.connect(host='localhost', user='root', passwd='', db='py', use_unicode = 1, charset = 'utf8')
еще можно посмотреть здесь
basist
o7412369815963, оу.. не знал.. спасибо)) на будущее пригодится..
Panter7777
Cпасибо за быстрые ответы!
o7412369815963, print мне не подходит, мне нужно все эти записи вывести каким-то списком (self.tpl.set_var(“USERS”, self.users - выводит результат в шаблоне вместо метки {USERS}))!
тоесть вместо self.users я не могу использовать print ‘ ’.join( self.users ) - это зашито в шаблонизатор!!! Тут то и вся проблема
Panter7777
Ура получилось сделать так:
for i in range(0,len(infos_u)+1):
for us in infos_u:
a = us.fio.decode("cp1251").encode("utf-8")
#self.users.append(a)
us = "%s" % a
print us
Но почемуто, вывело только 1-ну запись, а не все!?!??!
Panter7777
Решил!!! Может кому-то понадобится, проблема была в том что нельзя списки и корежи переконвертировать, так как на выходе получишь внутренее понимание списка/кортежа кодировки.
нужно такие вещи делать через переменные:
fio = ""
for us in infos_u:
a = us.fio.decode("cp1251").encode("utf-8")
if fio:
fio += ",%s" % a
else:
fio += ",%s" % a
self.tpl.set_var("USERS", fio) #И просто вставляем переменную для вывода!!!
ну или для большинства это будет print fio.

Всем спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB