Closed skaa closed 4 years ago
Классика проблем с кодировкой и виндовая реализация cp1251. По факту - проблема в сторонней либе (и, кстати, так и не понятно, зачем они насильно пытаются это делать, если браузеры нынче могут в нормальный диапазон символов).
В качестве локального решения может помочь изменение hostname на что-нибудь в латинском исполнении (Natali-PC).
По коду - https://github.com/werwolfby/monitorrent/blob/develop/server.py#L188 и падает на https://github.com/cherrypy/cheroot/blob/master/cheroot/server.py#L884
Из rfc:
By default, message header field parameters in Hypertext Transfer Protocol (HTTP) messages cannot carry characters outside the ISO- 8859-1 character set. RFC 2231 defines an encoding mechanism for use
Так что похоже что логично :(. Надо наверное будет захардкодать имя сервера.
Это стандартная рекомендация для совместимости с RFC 2231. Раздел 3.2 особенно подчеркивает, что это не является обязательным требованием:
However, RFC 2231 does not specify a mandatory-to-implement character set, making it hard for senders to decide which character set to use. Thus, recipients implementing this specification MUST support the character sets "ISO-8859-1" [ISO-8859-1] and "UTF-8" [RFC3629].
В придачу, w3 также не настаивает на использовании "ISO-8859-1".
Я бы завел тикет в cheroot для начала и спросил о возможности использования дефолтного utf-8
. За спрос не бьют, как говорится.
Согласен, спасибо
@werwolfby I've raised this question @ https://github.com/cherrypy/cheroot/issues/27
@webknjaz thanks a lot!
@werwolfby while I'm not sure about the way we'd fix this in cheroot, I suggest you specifying the server name explicitly in this call as a workaround.
It would look smth like:
server = wsgi.Server(server_start_params, app, server_name='Monitorrent Server/v100500')
@werwolfby otherwise upgrade cheroot to v5.7.0
, It's got normal string set by default now.
Cool, will do it.
@webknjaz cause we've already updated to 6+ version of cheroot, I close the issue
При открытии http://localhost:6687/ в консоли ошибки:
видимо дело в том, что компьютер с виндой имеет сетевое имя Натали-ПК. Кстати этот текст повторяется несколько раз, хотя запрос из браузера выполнялся только один.