我正在使用mysql在google app引擎上使用python开发一个网站。我的问题是,如果数据库中包含字符“ő”或“ű”,则渲染显示错误或显示“?”而不是'ő'或'ű'字符。
我已经尝试将数据库中的排序规则更改为utf-8
或latin-1
,但是结果是相同的。
我还尝试使用unidecode()
,.decode('latin1')
,.decode('utf8')
,并将该行添加到我的.py # -*- coding: 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
有人知道这个问题的解决方案吗?
答案 0 :(得分:1)
解码时无法更改编码类型。也就是说,如果您设置了latin-1
解码类型,那么经过编码的utf-8
字符串就不会神奇地变成utf-8
。
确保首先输入mysql输入utf-8
。在mysql连接字符串中,将其设置为utf-8
。另外,还要确保将表上的字符集设置为utf-8 https://dev.mysql.com/doc/refman/5.7/en/charset-applications.html