控制台中未正确显示UTF-8字符

控制台中未正确显示UTF-8字符,utf-8,clojure,console,Utf 8,Clojure,Console,我正在Clojure中实现一个纸牌游戏,我想使用unicode字符来表示套装: (def color-str "Maps card colors to strings" { :kreuz "♣", :grun "♠", :herz "♥", :schell "♦" }) 但是,我得到的结果不是所需的字符: {:grun "ΓÖá", :herz "ΓÖÑ", :kreuz "ΓÖú", :schell "ΓÖª"} 类似地,当我将color str重新定义为: (def color-

我正在Clojure中实现一个纸牌游戏,我想使用unicode字符来表示套装:

(def color-str "Maps card colors to strings"
  { :kreuz "♣", :grun "♠", :herz   "♥", :schell "♦" })
但是,我得到的结果不是所需的字符:

{:grun "ΓÖá", :herz "ΓÖÑ", :kreuz "ΓÖú", :schell "ΓÖª"}
类似地,当我将
color str
重新定义为:

(def color-str "Maps card colors to strings"
  { :kreuz \u2663, :grun \u2660, :herz \u2665, :schell \u2666 })
我得到:

{:grun \ΓÖá, :herz \ΓÖÑ, :kreuz \ΓÖú, :schell \ΓÖª}
文件保存为UTF-8,无BOM表。我已经尝试添加:

:javac-options ["-encoding utf8"]
:jvm-opts ["-Dfile.encoding=UTF-8"]
project.clj
文件,但它没有帮助。我知道控制台(Cygwin的Bash)能够显示这些字符——当我复制粘贴的
{:kreuz“♣", :格伦“♠“,:herz”♥“,:schell”♦“}
直接复制到REPL中,它会正确显示它们


我错过了什么?

控制台的字符编码设置为与Clojure认为的设置不同的内容。

我的解决方案是运行:

cmd /c chcp 65001
它将控制台中的默认代码页设置为UTF-8。默认情况下,CMD将代码页默认设置为当前语言和本地化设置,例如,将其设置为UTF-8()可解决此问题


在@Jesper建议它与控制台编码相关后,我从年的第二个答案中得到了这个想法。

控制台的字符编码设置为与Clojure认为的设置不同的内容。谢谢!运行
cmd/c chcp 65001
确实解决了问题。@Madding你应该将其作为答案发布并接受它。我希望如此@杰斯珀把它贴出来,但我也能做到。