为clojure源文件启用UTF-8编码

我正在开发一个涉及maven,java和clojure的项目。 我面临的问题是,我在我的clojure源文件中有一些UTF-8字符,因为我的源代码没有被java编译器正确解释,我通过设置环境变量JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8得到它的工作JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8 ,但我想要的是通过MAVEN传递这个属性。

我已经尝试过设置MAVEN_OPTS=-Dfile.encoding但这似乎不起作用。
我也试过为maven的编译器插件设置配置……这样的事情:

   -Dfile.encoding=UTF8  

这也不起作用。

我做错了什么,还是有别的办法。

谢谢,
RD

好的,这里有更多细节。 这是我的父母pom,

   org.apache.maven.plugins maven-compiler-plugin  1.5 1.5 UTF-8 <! also tried UTF8   

孩子的pom没有什么有趣的,除了……

   src/main/clojure   

;; clojure代码片段会导致问题

 (let [char "대"] (not (empty? (filter #(s/contains? % char) ))) ;; The list is always empty because I never find a match if I do not set the env. variable 

你试过传递编译器选项吗? [-encoding UTF-8]

更新:根据您的意见,这是一个运行时,而不是编译问题。 作为一种解决方法,您可以尝试将字符转义为unicode。

即在clojure文件中将字符更改为“\ uXXXX”,其中XXXX是hex的Unicode点。

如果您的unit testing中出现问题。 您可以通过设置argLine属性来配置surefire插件。 这允许您在命令行上设置任意JVM选项。

您是否通过Compiler Plugin设置参数?

   org.apache.maven.plugins maven-compiler-plugin  -Dfile.encoding=UTF8    

鉴于Clojure实际上将输入文件的预期编码硬编码为UTF8(参见src / jvm / clojure / lang / Compiler.java, loadFile -method),我很惊讶使用file.encoding确实有任何影响。

尝试将此属性添加到您的pom UTF-8

对我来说,这段代码在Emacs中的苹果酒REPL中没有问题。

 ;; returns sequence ("대") (filter #(= % "대") ["대" "한" "민" "국"]) 

你能提供发出错误的代码吗?