Уведомления

Группа в Telegram: @pythonsu

#1 Март 4, 2011 11:02:27

Panter7777
От:
Зарегистрирован: 2011-02-16
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка списка

Всем добрый день!
Вот столкнулся с проблемкой.
Вытягиваю значения из базы(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???



Офлайн

#2 Март 4, 2011 11:24:15

basist
От:
Зарегистрирован: 2009-09-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка списка

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)
Овчинников Теравский



Офлайн

#3 Март 4, 2011 11:27:55

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Перекодировка списка

перекодировка не сохраняется, надо так:

for us in infos_u:
a = us.fio.decode("cp1251").encode("utf-8")
self.users.append(a)
print ' '.join( self.users )

Офлайн

#4 Март 4, 2011 11:32:00

basist
От:
Зарегистрирован: 2009-09-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка списка

но это в консоли результат.. как в приложении будет неизвестно… вчера была проблема похожая, но только и в базе был утф-8 и файл сохранен в утф-8, а все равно кракозябры выдавал.. в моем случае помогло

MyDB = MySQLdb.connect(host='localhost', user='root', passwd='', db='py', use_unicode = 1, charset = 'utf8')
еще можно посмотреть здесь



Офлайн

#5 Март 4, 2011 11:34:27

basist
От:
Зарегистрирован: 2009-09-05
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка списка

o7412369815963, оу.. не знал.. спасибо)) на будущее пригодится..



Офлайн

#6 Март 4, 2011 11:42:29

Panter7777
От:
Зарегистрирован: 2011-02-16
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка списка

Cпасибо за быстрые ответы!
o7412369815963, print мне не подходит, мне нужно все эти записи вывести каким-то списком (self.tpl.set_var(“USERS”, self.users - выводит результат в шаблоне вместо метки {USERS}))!
тоесть вместо self.users я не могу использовать print ‘ ’.join( self.users ) - это зашито в шаблонизатор!!! Тут то и вся проблема



Офлайн

#7 Март 4, 2011 12:38:57

Panter7777
От:
Зарегистрирован: 2011-02-16
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка списка

Ура получилось сделать так:

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-ну запись, а не все!?!??!



Офлайн

#8 Март 4, 2011 15:15:14

Panter7777
От:
Зарегистрирован: 2011-02-16
Сообщения: 31
Репутация: +  0  -
Профиль   Отправить e-mail  

Перекодировка списка

Решил!!! Может кому-то понадобится, проблема была в том что нельзя списки и корежи переконвертировать, так как на выходе получишь внутренее понимание списка/кортежа кодировки.
нужно такие вещи делать через переменные:

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.

Всем спасибо!



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version