我试图在clojure中打印一个中文字符串“哈哈”。运行环境为 Windows 7 cmd.exe
,. 默认代码页为 CP936(GBK)。我可以在正确显示“哈哈”的情况下查看GBK编码的源文件cmd.exe
,只需运行type core.clj
。
我知道我可以将cmd.exe
的代码页更改为 65001 以启用 UTF-8,但我确实想知道:
cmd.exe
Win7下用Java程序打印GBK字符是不是很傻?- 我可以在 Clojure 中“生成”一个带有 GBK 编码的字符串吗?
我使用 leiningen 来设置项目,这是project.clj
文件:
(defproject fibo "0.1.0-SNAPSHOT"
:description "FIXME: write description"
:url "http://example.com/FIXME"
:license {:name "Eclipse Public License"
:url "http://www.eclipse.org/legal/epl-v10.html"}
:dependencies [[org.clojure/clojure "1.5.1"]]
:jvm-opts ["-Dfile.encoding=utf-8"]
:main fibo.core)
源代码很简单:
(ns fibo.core
(:gen-class))
(defn -main
[& args]
;; work around dangerous default behaviour in Clojure
(alter-var-root #'*read-eval* (constantly false))
(println "哈哈"))
输出如下所示:
D:...\_dev\fibo> lein run
????
而且我还尝试lein run
在设置 JAVA_OPTION -Dfile.encoding=xxx后调用。不幸的是,UTF-8 / GBK / GB18030 / ANSI / CP936都没有帮助,我总是得到????
.
需要澄清的一件事:当我尝试使用 _JAVA_OPTION 更改 file.encoding 时,我没有同时使用:jvm-opts ["-Dfile.encoding=utf-8"]
。在我尝试了上述所有编码但没有运气后,我:jvm-opts
在 project.clj 中添加了 UTF-8 作为默认编码。