LINUX.ORG.RU

MySQL, Python, кодировки.

 , ,


0

1

База в UTF-8. Исходники - тоже UTF-8. Выполняю запрос - все руссие символы превращаются в "?".

Че делать?

РЕШЕНИЕ: http://www.dasprids.de/blog/2007/12/17/python-mysqldb-and-utf-8

Deleted

Последнее исправление: Bizun (всего исправлений: 1)

Дать экземпляр кода, на котором можно воспроизвести проблему. Опционально потыкать в encode|decode-методы.

Lilly
()

поменять работу?

anonymous
()
Ответ на: комментарий от Lilly

Ок, есть бд с русским текстом в UTF-8 Unicode.

Программа:

# -*- coding: utf-8 -*-
sqlQuery = """
SELECT
	lastname, firstname, age
FROM
    Clients
"""

def connect_db():
        db = MySQLdb.connect(host="host", user="user", passwd="pass", db="mydb")
        return db

def main():
	db = connect_db()
	print "Connection..."
	cur = db.cursor()
	print "Complete!"
	
	print "Please wait..."
	cur.execute(sqlQuery)

	for row in cur.fetchall():
		(lastname, firstname, age) = row
		print lastname, firstname, age

if __name__ == "__main__":
    main()
Ну и вывод - вопросы.

Deleted
()

перестаньте уже помогать этому неблагодарному уродцу

anonymous
()
Ответ на: комментарий от Deleted

Блин, я не так формулировал запрос. Спасибо.

Deleted
()
Ответ на: комментарий от Deleted

Для начала посмотреть

sys.stdout.encoding
, потом попробовать потыкать в decode, а лучше в гугл(выше-выше).

// И да, надеюсь, ты *очень* сократил свой код ради краткости примера и намеренно вырезал оттуда все исключения, проверки, комментарии.

Lilly
()
Последнее исправление: Lilly (всего исправлений: 1)

Прозреваю проблему настроками кодировки в мускуле. У него куча настроек для кодировок (кодировка в которой хранятся данные, кодировка в который данные передаются клиенту и ещё что-то там) если хоть в одной из них будет что-то не то то данные превращаются в тыкву. Сейчас дико лень вспоминать детали, но инфу не трудно нагуглить по запросу вроде «mysql знаки вопроса», это очень популярные грабли.

MrClon ★★★★★
()
Ответ на: комментарий от Lilly

И да, надеюсь, ты *очень* сократил свой код

Сократил, но не очень. Хост всегда апнутый, база существует на 12334% и доступна всегда.

Вообще, да, добавлю проверки, на всякий случай. Сейчас просто рабочий прототип.

Deleted
()
Ответ на: комментарий от Deleted

Хост всегда апнутый

доступна всегда

Понятно. Лучше бросай это дело. Ну это так, маленький совет.

Lilly
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.