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

2022-09-04 23:29:24

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

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

 <configuration>
        <compilerArgument>-Dfile.encoding=UTF8</compilerArgument>
 </configuration>

这也行不通。

我是我做错了什么,还是有另一种方式。

谢谢,
RD

好的,这里有一些更详细的信息。这是我的父母pom,

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <source>1.5</source>
      <target>1.5</target>
      <encoding>UTF-8</encoding> <! also tried <encoding>UTF8</encoding>
    </configuration>
  </plugin>

在孩子的pom中没有什么有趣的,除了...

<resources>
  <resource>
    <directory>src/main/clojure</directory>
  </resource>
</resources>

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

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

答案 1

您是否尝试过传递编译器选项?[-编码 UTF-8]


答案 2

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

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

如果问题发生在单元测试中。您可以通过设置 argLine 属性来配置 surefire 插件。这允许您在命令行上设置任意 JVM 选项。


推荐