当前位置: 首页 > 知识库问答 >
问题:

应用引擎-Python:UnicodeDecodeError:'utf8'编解码器无法解码位置1中的字节0xe1:无效的延续字节

傅正阳
2023-03-14

我正在用python 2.7版在App Engine(谷歌云平台)上做一个小烧瓶服务器,我对带有重音符号和“ñ”字母的字母有问题。我在这里分享我的代码:

@app.route('/faq', methods=['GET'])
def get_faq():
    response = _get_faq() 
    return json.dumps(response), 200, {'Content-Type': 'application/json'}

def _get_faq():
   db = MySQLdb.connect(host=CLOUDSQL_CONNECTION_HOST, user=CLOUDSQL_USER, passwd=CLOUDSQL_PASSWORD, use_unicode=True, charset='utf8')
   query = "SELECT question, answer FROM faq_table"
   cursor = db.cursor(cursorclass=MySQLdb.cursors.DictCursor)
   cursor.execute(query)
   result=cursor.fetchall()

   faq_response = []
   for row in result:
       faq_response.append(
           {
               "question": row["question"], 
               "answer": row["answer"]
           }
       )
   return faq_response

但当我将此代码上传到App Engine并调用此服务时,服务器会发送代码500,并在错误报告中显示下一条消息:

UnicodeDecodeError:'utf8'编解码器无法解码位置22中的字节0xf3:无效的延续字节

我不能这样解决这个问题:

json.dumps(response).encode('utf-8')

我总是有同样的反应。追踪是下一个:

在iterencode(/base/alloc/tmpfs/dynamic_runtimes/python27g/ec315266546cb44c/python27/python27_dist/lib/python2.7/json/encoder.py:270)

at encode(/base/alloc/tmpfs/dynamic_runtimes/python27g/ec315266546cb44c/python27/python27_dist/lib/python2.7/json/encoder.py:207)

转储时(/base/alloc/tmpfs/dynamic_runtimes/python27g/ec315266546cb44c/python27/python27_dist/lib/python2.7/json/init.py:244)

在get_faq(/base/data/home/apps/xxxxx/yyyyyyyy:nnnnnnn.mmmmmmm/main.py: 7)

有人能帮忙吗?谢谢

共有1个答案

仇建茗
2023-03-14

尝试:

json.dumps(response.encode('utf-8'))
 类似资料: