clojure и ring: utf-8 в ответах появляется как '?'
Я был удивлен, обнаружив, что мое приложение для кольца не обслуживает utf-8 должным образом. Я свел это к простому тестовому случаю, кто-нибудь знает, как гарантировать, что он всегда будет возвращать utf-8 в браузер?
(ns utf8test.core)
(defn app
[request]
{:status 200 :body "ɮѪϴ"})
В project.clj (используя плагин lein-ring):
:ring {:handler utf8test.core/app}
В терминале:
> lein ring server
---> ɮѪϴ (это неправильно, должно быть ɮѪϴ)
Желательно метод, который работает и для Tomcat, поскольку именно здесь развертывается приложение.
Спасибо!
1 ответ
Решение
Без настройки Content-Type
Возможно, Jetty отправляет ответ, указывающий кодировку платформы по умолчанию. Попробуйте использовать content-type
или жеcharset
Функции ответа для добавления соответствующего заголовка (например, (charset {:status 200 :body "..."} "UTF-8")
).