Подтвердить что ты не робот

Включение кодировки UTF-8 для исходных файлов clojure

Я работаю над проектом, который включает maven, java и clojure. Проблема, с которой я столкнулся, заключается в том, что у меня есть несколько символов UTF-8 в моих исходных файлах clojure, из-за которых мой исходный код не правильно интерпретируется java-компилятором, я как-то получил его, установив переменную среды JAVA_TOOL_OPTIONS=-Dfile.encoding=UTF8, но я хочу передать это свойство через MAVEN.

Я уже пробовал установить MAVEN_OPTS=-Dfile.encoding, но это, похоже, не работает.
Я также попытался настроить конфигурацию для компилятора maven... что-то вроде этого:

 <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>

Ничего интересного в детском пом, кроме...

<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
4b9b3361

Ответ 2

Обновление. Основываясь на ваших комментариях, это среда выполнения, а не компиляция. В качестве обходного пути вы можете попробовать избежать символа как unicode.

то есть. измените символ на "\ uXXXX" в файле clojure, где XXXX является точкой Юникода в шестнадцатеричном формате.

Если ваша проблема происходит в ваших модульных тестах. Вы можете настроить плагин surefire, установив свойство argLine. Это позволяет вам установить произвольные параметры JVM в командной строке.

Ответ 3

Установили ли вы параметр через Compiler Plugin следующим образом?

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <compilerArgument>-Dfile.encoding=UTF8</compilerArgument>
    </configuration>
  </plugin>
</plugins>

Ответ 4

Учитывая тот факт, что Clojure действительно кодирует ожидаемую кодировку входных файлов в UTF8 (см. src/jvm/clojure/lang/Compiler.java, loadFile -method), я удивлен, что использование file.encoding вообще не имеет никакого эффекта.

Ответ 5

Попробуйте добавить это свойство к своему pom UTF-8

Ответ 6

Для меня этот код работает без проблем в сидре REPL в Emacs.

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

Можете ли вы предоставить код, который испускает ошибку?