我正在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 "♣", :grun "♠", :herz "♥", :schell "♦" }复制粘贴到REPL时,它可以正确显示它们。

我错过了什么?

最佳答案

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

09-13 11:19