Python 2.7和Appengine的字符显示为“?”

时间:2019-02-20 09:55:25

标签: python mysql sql python-2.7 google-app-engine

我正在使用mysql在g​​oogle app引擎上使用python开发一个网站。我的问题是,如果数据库中包含字符“ő”或“ű”,则渲染显示错误或显示“?”而不是'ő'或'ű'字符。

我已经尝试将数据库中的排序规则更改为utf-8latin-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

有人知道这个问题的解决方案吗?

1 个答案:

答案 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