CherryPy WS 不返回 UTF-8 中的字符串

CherryPy WS is not returning string in UTF-8

我正在尝试使用 CherryPy 和 Python 构建 REST Web 服务。它有效,但是当我通过 Chrome 访问它时,它没有以 UTF-8 显示。

此 Web 服务查询 MongoDB,然后在字典列表中给出结果。我做了一个 print(ticketME),它显示了正确的字符:

但是当它显示在 Chrome 时,显示不正确(而且我也意识到 "solucion" 或 "problema" 没有显示...):

正如您在代码中看到的,我将字符集设置为 UTF-8:

import cherrypy
import pymongo
import urllib
import pyodbc
import mysql.connector
from datetime import datetime
import time
import sys
import numpy as np

class HelloWorld(object):


    @cherrypy.expose
    @cherrypy.tools.json_out()
    def index(self):
        password = * password *
        myclient = pymongo.MongoClient(*mongoDB connection string*)
        mydb = myclient["moica2"]
        mycol = mydb["moicaTickets"]

        myquery = *mongoDB aggregate query*
        mydoc = mycol.aggregate(myquery)
        mydb = None
        myclient.close()
        mycol = None

        resultadoTicketsME = []

        for x in mydoc:
            try:
                asunto = x['pAsunto']
                nrotkt = x['pTicket']
                estado = x['pEstado']
                fechaCreacion = x['pFechaCreacion']
                fechaCierre = x['pFechaCierre']
                nodoCRM =  x['pNodoCRM']
                nodoCMTS = x['pNodoCMTS']
                if ('COMPLETO' in nodoCMTS):
                    nodoCMTS = "Completo"
                RTs = x['pRTs']
                notas = x['pNotas']
                asuntoCierre = x['pAsuntoCierre']
                estadoEtaClick = x['pEstadoEtaClick']
                afectacion = x['pAfectacion']
                problema = x['pProblema']
                solucion = x['pSolucion']
                arbolCreacion = x['pElArbolCreacion']
                arbolActual = x['pElarbolActual']
                idFuente = int(x['pFuente']['idFuente'])

                ticketME = {
                    'nrotkt': nrotkt, 
                    'asunto': asunto, 
                    'estado': estado, 
                    'fechaCreacion': fechaCreacion, 
                    'fechaCierre': fechaCierre, 
                    'nodoCRM': nodoCRM, 
                    'nodoCMTS': nodoCMTS, 
                    'RTs': RTs, 
                    'notas': notas, 
                    'asuntoCierre': asuntoCierre, 
                    'estadoEtaClick': estadoEtaClick, 
                    'afectacion': afectacion, 
                    'problema': problema, 
                    'solucion': solucion, 
                    'arbolCreacion': arbolCreacion, 
                    'arbolActual': arbolActual, 
                    'idFuente': idFuente
                }

                print(ticketME)
                resultadoTicketsME.append(ticketME)

            except:

                lf = open("error.log", "a+")
                lf.write("MOICA2FUENTESME %s : No se pudo insertar el tkt %s\n" % (datetime.now().strftime("%Y-%m-%d %H:%M:%S"),x['pTicket']))
                lf.close()

        cherrypy.response.headers['Content-Type'] = "text/html;charset=utf-8" 
        return  resultadoTicketsME

USERS = {'ngabioud': 'password'}

def validate_password(realm, username, password):
    if username in USERS and USERS[username] == password:
       return True
    return False

cherrypy.config.update({'tools.encode.on': True,
                         'tools.encode.encoding': 'utf-8',
                         'tools.decode.on': True,
                         'tools.auth_basic.on': True,
                        'tools.auth_basic.realm': 'localhost',
                        'tools.auth_basic.checkpassword': validate_password,
                        'tools.auth_basic.accept_charset': 'UTF-8',
                        })
cherrypy.quickstart(HelloWorld())

还有什么我可以尝试的吗?

谢谢, 最好的问候

正如 snakecharmerb 在评论中所述,这是一个 Chrome 代表问题。我做了一个 .php 设置编码为 utf-8,它显示正确。