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"
当我搜索Ömür
时,它会给我输出= ömür
2 - 尝试str.decode("utf-8")
3 - 我也用utf -8
创建了我的数据库当我尝试str.decode时,它给了我ascii错误:
'ascii' codec can't encode character u'\xf6' in position 0: ordinal not in range(128)
我的代码出了什么问题?
答案 0 :(得分:0)
数据库的响应已经是Unicode。我们必须假设Web.py在响应时将其编码为UTF-8。
因此,您需要添加一个Content-Type
标头,并将charset
设置为utf-8
,以便浏览器知道该网页的编码。
E.g。
web.header('Content-Type','text/html; charset=utf-8', unique=True)
完整示例:
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"