Форум сайта python.su
Зашел на отдаленную MySQL из Python, не читается кириллица, выводит:
(u'\u0412\u0430\u0448\u0438\u043d\u0433\u0442\u043e\u043d \u0438 \u0413\u0430\u0432\u0430\u043d\u0430 \u0434\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043b\u0438\u0441\u044c \u043e\u0431 \u043e\u0442\u043a\u0440\u044b\u0442\u0438\u0438 \u043f\u043e\u0441\u043e\u043b\u044c\u0441\u0442\u0432',)
код:
db=MySQLdb.connect(host="x.x.x.x", user="name", passwd="xxxx", db="nam", charset='utf8') db.set_character_set('utf8') db.query("""SELECT news_new.title FROM news_new""") r=db.store_result() vec = r.fetch_row(100) print vec[5]
Отредактировано Polines (Окт. 20, 2015 16:37:54)
Офлайн
в начало файла
# -*- coding: utf-8 -*-
Гуглинг python+utf-8
Офлайн
ZerG
в начало файла # -*- coding: utf-8 -*-Гуглинг python+utf-8
# -*- coding: utf-8 -*-
# -*- coding: utf-8
Офлайн
Естественно…
print(repr(vec[5]).decode("unicode_escape"))
Отредактировано 4kpt_III (Окт. 20, 2015 17:17:06)
Офлайн
4kpt_IIIСпасибо, получилось!
Естественно…
Офлайн
Теперь выводит так:
(u'Вашингтон и Гавана договорились об открытии посольств',)Как убрать (u' ?
Офлайн
Polines
и это нормально. и это хорошо. ПОтому что в питоне есть такие str и unicode объекты. Не переживайте, все нормально.
Polinesа по вашему utf-8 это не Unicode ?
Это значит, что та MySQL база не на utf8 а на unicode ?
Polinesну если прям хотите, то переведите в строку полученное ранее значение. Вот быстрый пример:
Как убрать (u' ?
>>> su = u'Мир не унылое говно, просто я не в настроении' >>> su u'\u041c\u0438\u0440 \u043d\u0435 \u0443\u043d\u044b\u043b\u043e\u0435 \u0433\u0 43e\u0432\u043d\u043e, \u043f\u0440\u043e\u0441\u0442\u043e \u044f \u043d\u0435 \u0432 \u043d\u0430\u0441\u0442\u0440\u043e\u0435\u043d\u0438\u0438' >>> print su Мир не унылое говно, просто я не в настроении >>> su.encode('utf-8') # вот тут указывается желаемая вами кодировка '\xd0\x9c\xd0\xb8\xd1\x80 \xd0\xbd\xd0\xb5 \xd1\x83\xd0\xbd\xd1\x8b\xd0\xbb\xd0\ xbe\xd0\xb5 \xd0\xb3\xd0\xbe\xd0\xb2\xd0\xbd\xd0\xbe, \xd0\xbf\xd1\x80\xd0\xbe\x d1\x81\xd1\x82\xd0\xbe \xd1\x8f \xd0\xbd\xd0\xb5 \xd0\xb2 \xd0\xbd\xd0\xb0\xd1\x 81\xd1\x82\xd1\x80\xd0\xbe\xd0\xb5\xd0\xbd\xd0\xb8\xd0\xb8'
Офлайн
JOHN_16utf-8 - это не unicode, а одна из его кодировок (функция, отображающая последовательность октетов на кодовую точку).
а по вашему utf-8 это не Unicode ?
Отредактировано py.user.next (Окт. 21, 2015 12:04:23)
Офлайн
py.user.next
Вот только счаз заметил оплошность в собственном сообщении. Естественно речь, во-первых, не об Python объектах Unicode. Во вторых,все именно так, как вы и описали, дело в том, что UTF-8 это кодировка, но настолько вошедшая в жизнь, что стала неким синонимом понятия unicode - потому что, пусть и ценой лишних байт, может закодировать в себе достаточно символов для решения подавляющего большинства всех прикладных задач.
Офлайн
Совсем другое дело что ТС, вполне возможно, и половины этого не понимает.
Офлайн