我正在使用 mysql 在 google app engine 上用 python 开发一个网站。我的问题是,如果数据库中有字符“ő”或“ű”,渲染会显示错误或显示“?”而不是“ő”或“ű”字符。
我已经尝试将数据库中的排序规则更改为 utf-8
或 latin-1
,但结果是相同的。
我还尝试使用 unidecode()
、.decode('latin1')
、.decode('utf8')
并添加我的 .py 行 # -*- 编码:utf-8 -*-
没有任何帮助。有时我会收到“ascii 解码错误”或“utf8 无法解码字节”错误。我能实现的最好的结果就是“?”符号而不是特殊字符。
this is a sample of my code:
c.execute("""select subject from mytable""")
blogs = []
for (row) in c:
blogs.append(dict([('azon',row[0])]))
return blogs
如果我使用这个,那么页面渲染完美
c.execute("""select subject from mytable""")
blogs = []
for (row) in c:
blogs.append(dict([('azon','ő')]))
return blogs
最佳答案
解码时无法更改编码类型。即,如果您设置 utf-8
解码类型,编码的 latin-1
字符串不会神奇地变成 utf-8
。
首先确保您的 mysql 输入为 utf-8
。在 mysql 连接字符串中将其设置为 utf-8。还要确保表上的字符集设置为 utf-8 https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html
关于Python 2.7 和 Appengine ő/ű 字符显示为 '?',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54783436/