Я хочу указать кодировку ответа HTTP, изменив заголовок Content-Type
. Однако это не работает.Принудительная кодировка ответа в CherryPy
Вот краткий пример:
#coding=utf-8
import cherrypy
class Website:
@cherrypy.expose()
def index(self):
cherrypy.response.headers['Content-Type']='text/plain; charset=gbk'
return '。。。'.encode('gbk')
cherrypy.quickstart(Website(),'/',{
'/': {
'tools.response_headers.on':True,
}
})
И когда я посещаю эту страницу, то Content-Type
изменяется таинственно text/plain;charset=utf-8
, вызывая кракозябры в браузере.
C:\Users\Administrator>ncat 127.0.0.1 8080 -C
GET/HTTP/1.1
Host: 127.0.0.1:8080
HTTP/1.1 200 OK
Server: CherryPy/7.1.0
Content-Length: 6
Content-Type: text/plain;charset=utf-8
Date: Mon, 22 Aug 2016 01:08:13 GMT
。。。^C
Кажется, что CherryPy обнаруживает кодировку содержимого и автоматически отменяет кодировку. Если да, то как я могу отключить эту функцию?
Вы должны попробовать настройки '' tools.encode.encoding' и tools.decode.encoding' http://docs.cherrypy.org/en/latest/config.html#environments – webKnjaZ
хорошо, сайт я «Работающий» - это сервер обмена файлами, что означает, что кодировка варьируется от файла к файлу. поэтому я не могу жестко закодировать кодировку в конфигурацию cherrypy. – xmcp
Конфигурация Cherrypy может быть переопределена на основе класса или обработчика. Он не должен быть глобальным. – webKnjaZ