Portál AbcLinuxu, 10. května 2025 12:28

Dotaz: Python, MySQL a UTF8

2.9.2006 00:34 Libor Chocholaty | skóre: 12
Python, MySQL a UTF8
Přečteno: 658×
Odpovědět | Admin
Ahoj, mam problem s ukladanim UTF8 dat na MySQL 4.1.11, Debian Sarge. Databaze ma DEFAULT CHARSET utf8 ja pomoci programku posilam UTF8 data:
>>> db = MySQLdb.connect(host="", db="", user="", passwd="")
>>> c = db.cursor()
>>> c.execute("""INSERT INTO tabulka (nazev) VALUES (%s)""", ('č',))
1L
>>> c.execute("""INSERT INTO tabulka (nazev) VALUES (%s)""", ('ň',))
1L
No a do databaze se mi misto 'č' uloží nějaký paskvil. Při čtení totiž dostanu:
>>> c.execute("""SELECT * FROM tabulka""")
2L
>>> rows = c.fetchall()
>>> print rows
(('\xc4?',), ('\xc5\x88',))
Na první pohled je zřejmá chyba. Z nějakého záhadného důvodu se mi třeba při set character_set_results=latin1; zobrazuje v MySQL consoli dobře aspoň to 'ň', ale misto 'č' jen malý čtvereček. Ví někdo jak z toho ven?
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

2.9.2006 01:40 Petr Šobáň | skóre: 80 | blog: soban | Olomouc
Rozbalit Rozbalit vše Re: Python, MySQL a UTF8
Odpovědět | | Sbalit | Link | Blokovat | Admin
Není to stejnej problém ?

UTF-8 v mysql a php
3.9.2006 21:43 Libor Chocholaty | skóre: 12
Rozbalit Rozbalit vše Re: Python, MySQL a UTF8
Bingo, stačilo po vytvoření konekšny ;-) zavolat
c.execute("""SET CHARSET utf8;""")
c.execute("""SET NAMES utf8;""")
c.execute("""SET COLLATION_CONNECTION='utf8_czech_ci';""")
a už to jede. (I když ty středníky by tam nemusely bejt... typický příznak copy-paste. ;-)

Díky, Libor

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.