Я работаю на небольшом сервере Flask в App Engine (Google Cloud Platform) с Python версии 2.7, и у меня проблема с буквами с акцентом и буквой «-».Я делюсь своим кодом здесь:
@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» не может декодировать байт 0xf3 в позиции 22: недопустимый байт продолжения
Я не могу решить эту проблему следующим образом:
json.dumps(response).encode('utf-8')
Всегда у меня естьтот же ответ.Трассировка выглядит следующим образом:
с использованием кода итераций (/base/alloc/tmpfs/dynamic_runtimes/python27g/ec315266546cb44c/python27/python27_dist/lib/python2.7/json/encoder.py:270)
в кодировке (/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)
Может кто-нибудь помочь?Спасибо