Символы UTF-8 не отображаются должным образом в браузере с использованием пьедестала

Я сделал простейший проект Pedestal и запускаю его в своем репле локально. Однако после проверки браузера на localhost:8890 Я увидел (заменяющие символы) вместо реального текста (кириллические символы), который я вставил в свой маршрут на Пьедестале.

Я также проверил в браузере заголовки ответа devtools: Content-Type: text / html; charset = utf-8 присутствует.

Прежде чем спросить:

  1. Да я настроил charset=UTF-8 в ответ, как вы можете видеть в коде ниже.
  2. мой core.clj Файл также в кодировке UTF-8.
  3. Я тоже пробовал другие браузеры, тоже самое.
  4. Дополнительная информация: я использую 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, чтобы исправить это.

введите описание изображения здесь

Другие вопросы по тегам