Seite 1 von 1

Mysql utf-8 Problem

Verfasst: Donnerstag 15. März 2007, 17:20
von monocult
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

Verfasst: Donnerstag 15. März 2007, 17:41
von jens

Verfasst: Donnerstag 15. März 2007, 17:48
von monocult
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?

Verfasst: Freitag 16. März 2007, 14:40
von Y0Gi
Sendest du den XHTML-Output auch mit charset=UTF-8 im HTTP-Header oder im <head>?