2016-03-23 2 views
0
def search(str): 
    cnx = mysql.connector.connect(user='arda', password='1', database='worddb') 
    cursor = cnx.cursor() 
    sqlq = "SELECT COUNT(1) FROM names WHERE name = '%s'" %str 
    cursor.execute(sqlq) 
    if cursor.fetchone()[0]: 
     return str + " " + "name" 
    else: 
     return str + " " + "not name" 

wenn ich Ömür suchen es gibt mir die Ausgabe = ömürWeb.py - Unicode: Decode ("utf-8") gibt Fehler

  1. ich erklärte # - - Codierung: utf-8 - -

2 - versuchte str.decode("utf-8")

3 - auch habe ich meine Datenbank mit utf -8

, wenn ich versuche str.decode es gibt mir ascii Fehler:

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

Was mit meinem Code falsch?

+1

Warum denken Sie, Sie entschlüsseln müssen? Es ist * encode *, dass Sie anrufen sollten. –

+1

'str' ist bereits eine Unicode-Zeichenfolge. Sie können kein Unicode dekodieren, obwohl die '.decode()' Methode verfügbar ist. Wie validierst du die Ausgabe? –

+0

Danke für Antworten, aber da ich und du erwartest, nichts ist falsch mit str, lass mich das Problem in meiner Antwort zeigen und nochmals vielen Dank. –

Antwort

0

Die Antwort von der Datenbank ist bereits ein Unicode. Wir müssen davon ausgehen, dass Web.py es in Antwort auf UTF-8 codiert.

Daher müssen Sie einen Content-Type Header mit dem charset Set auf utf-8 hinzufügen, damit der Browser die Codierung der Seite kennt.

z.

web.header('Content-Type','text/html; charset=utf-8', unique=True) 

Voll Beispiel:

def search(str): 
    web.header('Content-Type','text/html; charset=utf-8', unique=True) 
    cnx = mysql.connector.connect(user='arda', password='1', database='worddb') 
    cursor = cnx.cursor() 
    sqlq = "SELECT COUNT(1) FROM names WHERE name = '%s'" %str 
    cursor.execute(sqlq) 
    if cursor.fetchone()[0]: 
     return str + " " + "name" 
    else: 
     return str + " " + "not name"