Bin gerade dabei einen kleinen Server für eine Android App zu schreiben, der SQL Querry für sie ausführt und die Ergebnisse zurückgibt.
Jetzt befinden sich aber in der Datenbank Umlaute und diese sollen natürlich auch mit übertragen werden.
Ausgeben über Print ist das auch kein Problem, aber sobald ich die Daten aufbereite kommt der Fehler:
Ich bereite die Daten wie folgt für die App auf:UnicodeEncodeError: 'ascii' codec can't encode character u'\xe4' in position 1: ordinal not in range(128)
Code: Alles auswählen
c.execute("select * from allgemeine_infos where vorname = %s and nachname = %s order by allgemeine_infos.id", (vorname, nachname,))
db_tmp = c.fetchall()
antwort = ""
for i in db_tmp:
antwort += str(i["id"]) + ","
antwort += None2Str(i["vorname"]) + ","
antwort += None2Str(i["nachname"]) + ","
antwort += None2Str(i["geschlecht"]) + ","
antwort += None2Str(i["geburtstag"]) + ","
antwort += None2Str(i["geburts_jahr"]) + "."
conn.send(antwort)
None2Str gibt einfach ein Leerzeichen zurück wenn der Inhalt None ist.
Rufe die Datenbank auch schon mit "charset=''utf8" auf:
Code: Alles auswählen
db = MySQLdb.connect(host='blablabla.de',
db='datenbank',
user='user',
passwd='12345',
charset='utf8',
cursorclass=MySQLdb.cursors.DictCursor
)
Code: Alles auswählen
.decode("UTF-8")
und
.decode("iso-8859-1")