Символы UTF-8 не отображаются должным образом в браузере с использованием пьедестала
Я сделал простейший проект Pedestal и запускаю его в своем репле локально. Однако после проверки браузера на localhost:8890
Я увидел (заменяющие символы) вместо реального текста (кириллические символы), который я вставил в свой маршрут на Пьедестале.
Я также проверил в браузере заголовки ответа devtools: Content-Type: text / html; charset = utf-8 присутствует.
Прежде чем спросить:
- Да я настроил
charset=UTF-8
в ответ, как вы можете видеть в коде ниже. - мой
core.clj
Файл также в кодировке UTF-8. - Я тоже пробовал другие браузеры, тоже самое.
- Дополнительная информация: я использую Windows, но никогда не сталкивался с этой проблемой раньше с другими библиотеками и фреймворками (ring, yada). Может ли быть так, что Pedestal каким-то образом повреждает мой код при передаче его на сервер Jetty? Я не знаю.
Весь код проекта:
(ns samplepedestal.core
(:require [io.pedestal.http :as http]
[io.pedestal.http.route :as route])
(:gen-class))
(defn html-response
[req]
{:status 200
:body "<html lang=\"ru\">
<head>
<meta charset=\"utf-8\" />
<title>Текст на русском</title>
</head>
<body>Текст на русском</body>
</html>"
:headers {"Content-Type" "text/html; charset=UTF-8"}})
(def routes
(route/expand-routes
[[["/" {:get `html-response}]]]))
(def service-map
{::http/routes routes
::http/type :jetty
::http/port 8890})
(defn start []
(http/start (http/create-server service-map)))
;; -- Interactive development
(defonce server (atom nil))
(defn start-dev []
(reset! server
(http/start (http/create-server
(assoc service-map
::http/join? false)))))
(defn stop-dev []
(http/stop @server))
(defn restart []
(stop-dev)
(start-dev))
;; ---
(defn -main
"I don't do a whole lot ... yet."
[& args]
(println "Hello, World!"))
Это странное поведение, я понятия не имею, что мне не хватает, поэтому любая помощь будет принята с благодарностью. Спасибо!
1 ответ
Я думаю, что проблема в том, как начинается REPL. Есть ли у вас что-то вроде
Запуск сервера nREPL... "C: \ Program Files \ Java \ jdk1.8.0_66 \ jre \ bin \ java" -Dfile.encoding = Cp1251 -XX: -OmitStackTraceInFastThrow -Dclojure.compile.path = D: \ workspace-clojure \ the-next-big-server-side-thing \ target \ classes -Dthe-next-big-server-side-thing.version = 0.0.1-SNAPSHOT -Dclojure.debug = false -Didea.launcher.port = 50071 "-Didea.launcher.bin.
когда начинается REPL?
Если это так, вы можете добавить новый параметр JVM, чтобы исправить это.