2016-04-13 10 views
0

In Django, verwende ich einen externen Befehl für eine Abfrage gegen MySQL. Alles wird großartig, bis ich ein Feld mit utf-8 Zeichen (Art von Cami ó n) wiederherstellen. In diesem Punkt kann ich nicht mehr auf die queryset gehen und MySQL gibtEncoding ein Feld Ergebnis von einer Abfrage

'ascii' codec can't encode character u'\xf3' in position 34: ordinal not in range(128) 

Mein Code ist der nächste:

cursor = connection.cursor() 
query = "SELECT * FROM " + table_name + " ORDER BY " + "1" 
cursor.execute(query) 

rows = cursor.fetchall() 
for row in rows: 
    result = [] 
    for field in row: 
     print field 
     result += [str(field)] 

Wie kann ich diese Situation zu vermeiden? Dank Mates ...

EDITED: Es funktioniert durch field = unicode(field).encode("utf-8", "replace")

+0

Aufrufen und ersetzen der ursprünglichen Feldfolge für die nächste funktioniert ... field = Unicode (Feld) .encode ("utf-8", "ersetzen") –

+2

Warum machst du das? Warum benutzt du keine Django-Modelle? –

+0

Hahahaha ... wirklich lange Geschichte ... Ich werde fast verrückt versuchen, es zu lösen ... LOL –

Antwort

1

Versuchen Sie, die folgende Zeile am Anfang Ihres Python-Skript für die nächsten

# -*- coding: utf-8 -*- 
+0

Danke für Ihre Antwort. Es ist ein Django Projekt. Kann ich es trotzdem benutzen? Egal, ich habe eine Lösung gefunden, die ich meiner Meinung nach direkt verwenden kann. Überprüfen Sie mein Update. Danke Kamerad. –

0

Aufruf und ersetzt die ursprüngliche Feldleiste Hinzufügen one works ... field = Unicode (Feld) .encode ("utf-8", "replace")

Verwandte Themen