Mysql utf-8 Problem

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
monocult
User
Beiträge: 37
Registriert: Donnerstag 31. März 2005, 09:55
Wohnort: hennef
Kontaktdaten:

Donnerstag 15. März 2007, 17:20

Hallo,

ich hab hier ein mysql utf-8 Problem. Wenn ich mit dem unten stehenden Code etwas in meine Datenbank schreibe zeigt mir phpmyadmin auch die richtigen umlaute. Wenn ich die Daten aber mit python auslese bekomme ich nur seltsame Sonderzeichen dargestellt.

die Mysql Datenbank läuft unter "UTF-8" bzw. die Kollation ist "utf8_general_ci" und Firefox ist auch auf UTF-8 eingestellt.

bestimmt könnt ihr mir helfen ich bastle da schon eine weile dran rum :/

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: utf-8 -*-

from colubrid import ObjectApplication, execute, HttpResponse
import os, modules



class MyApplication(object):
	charset = 'utf-8'
	
	def index(self):

	
		query = """INSERT INTO `tb_users` ( `user_id` , `user_nikname` , `user_email` , `user_passwd` , `user_picture` , `user_web` ) VALUES (NULL , '%s', '%s', '%s', '', '%s');""" % (u'üüüüüäääää', 'useremail', 'userpasswda', 'userweb')
		resulta = modules.mysql(query)
		
		query = u"""SELECT user_nikname from tb_users ORDER BY user_id DESC """ 
		resultb = modules.mysql(query)

		erg = ''		
		for i in resultb:
			
			erg = erg + i[0]+ '<br>'

		response = HttpResponse(erg)
		response['Content-Type'] = 'text/html'
		return response


class DispatcherApplication(ObjectApplication):
    root = MyApplication

Code: Alles auswählen

def mysql(query):

	#Verbindung zur Datenbank:

	import MySQLdb

	connection = MySQLdb.connect(

		host="localhost",

		db="***",

		user="***", 

		passwd="***")	

	

	#Erstelle Dict Cursor

	curser = connection.cursor()



        curser.execute(query)



        result = curser.fetchall()

	connection.commit()        

	connection.close()

	return result
Benutzeravatar
jens
Moderator
Beiträge: 8483
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Donnerstag 15. März 2007, 17:41


CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
monocult
User
Beiträge: 37
Registriert: Donnerstag 31. März 2005, 09:55
Wohnort: hennef
Kontaktdaten:

Donnerstag 15. März 2007, 17:48

jens hat geschrieben:Schau mal hier: http://www.python-forum.de/topic-9425.html
danke ich schau mal.

Code: Alles auswählen

erg = erg + i[0].decode("latin-1")+ '<br>'
lösen konnte ich es bisher dadurch den string in latin1 umzuwandeln dann geht es. Ich verstehe nur nicht wieso. Wenn ich einen Unicode string in die Datenbank schreibe und die auch Unicode verwendet warum ist dann das was ich raus bekomme kein Unicode?
Y0Gi
User
Beiträge: 1454
Registriert: Freitag 22. September 2006, 23:05
Wohnort: ja

Freitag 16. März 2007, 14:40

Sendest du den XHTML-Output auch mit charset=UTF-8 im HTTP-Header oder im <head>?
Antworten