【发布时间】:2014-08-23 12:32:31
【问题描述】:
我正在 Windows 中使用 Clojure 代码。
如果我直接使用 Clojure 的 jar 文件,它会毫无问题地输出一个非 ASCII(日文)字符串。
你好.clj:
(println "こんにちは")
> java -jar 1.5.1.jar hello.clj
こんにちは
但在 Leiningen 项目的情况下,它不会按预期输出字符。
src/hello/core.clj:
(defn -main [& args]
(println "こんにちは"))
> lein run
????????
在这两种情况下,源文件的编码都是UTF-8,*out*的类是java.io.OutputStreamWriter,它的编码是MS932(日文代码页)。
(println "*out* :" (class *out*) (.getEncoding *out*))
;; *out* : java.io.OutputStreamWriter MS932
我知道如果我设置环境变量 JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF-8 并使用支持 UTF-8 的终端,它将正常工作。
但我想在 Windows 的默认控制台中使用 MS932 输出,就像 jar 文件的情况一样。
【问题讨论】: