включение кодировки UTF-8 для исходных файлов clojure - PullRequest
13 голосов
/ 16 сентября 2009

Я работаю над проектом, который включает 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

Хорошо, вот еще некоторые подробности. Это мой родительский пом,

  <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

Ответы [ 6 ]

1 голос
/ 16 сентября 2009

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

т.е. измените символ на '\ uXXXX' в файле clojure, где XXXX - это точка Unicode в шестнадцатеричном формате.

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

1 голос
/ 16 сентября 2009

Вы пробовали передать опции компилятора ? [-окодирование UTF-8]

0 голосов
/ 09 июля 2015

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

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

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

0 голосов
/ 07 октября 2009

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

0 голосов
/ 16 сентября 2009

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

0 голосов
/ 16 сентября 2009

Вы установили параметр через плагин компилятора следующим образом?

<plugins>
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <compilerArgument>-Dfile.encoding=UTF8</compilerArgument>
    </configuration>
  </plugin>
</plugins>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...