Как указать кодировку символов для параметров Ant Task в Java - PullRequest
2 голосов
/ 14 июня 2010

Я пишу задачу ANT на Java.

В моем build.xml я указываю параметры, которые следует читать из моего класса Java.Проблемы возникают, когда в этих параметрах я использую специальные символы, например, немецкие умлауты (Ö, Ä, Ü).В моей задаче java они отображаются как? -Символы (используя System.out.print из затмения).

Все мои файлы закодированы как UTF-8.и мой build.xml имеет соответствующую декларацию:

<?xml version="1.0" encoding="UTF-8" ?>

Для деталей написания задачи: я делаю это в соответствии с http://ant.apache.org/manual/develop.html (особенно вложенные элементы пункта 5)В моей задаче есть вложенные элементы, такие как:

<parameter name="test"   value="ÖÄÜtest"/>

и метод java:

public void addConfiguredParameter(Parameter prop) {
    System.out.println(prop.getValue());
    //prints ???test
}

для чтения значений параметров.

Ответы [ 3 ]

2 голосов
/ 14 июня 2010

Здесь выполняется несколько операций транскодирования:

  1. Сохранение XML в формате UTF-8 вашим редактором
    • Проверьте правильность кодировки символов с помощью шестнадцатеричного редактора
  2. Разбор XML Ant из строк UTF-8 в UTF-16
    • Ошибка здесь очень маловероятна
  3. Транскодирование System.out PrintStream из строк UTF-16 в кодировку платформы
    • Убедитесь, что используемая кодировка поддерживает символы
  4. Декодирование байтов, полученных консолью Eclipse, в строки UTF-16 для отображения
    • Убедитесь, что кодировка, используемая консолью, соответствует кодировке PrintStream

Кодированный как UTF-8, вы ожидаете следующих кодированных значений в вашем XML-файле:

Grapheme  UTF-8 encoded bytes
Ö         c3 96
Ä         c3 84
Ü         c3 9c
0 голосов
/ 15 июня 2010

Проблема как-то растворилась и, возможно, уже была устранена путем переключения всего на utf-8, но, возможно, затмение отреагировало не так быстро. Во всяком случае, я не мог воспроизвести ошибку.

Проблема, которая осталась, заключалась в том, что когда я ссылался на файл build.properties (который использует упомянутые символы) из моего build.xml - тогда моя задача java все еще не понимала символы правильно. Но я мог бы обойти это, используя \ u и шестнадцатеричное представление букв - хотя это не очень удобно!

0 голосов
/ 14 июня 2010

Вы пытались запустить Java с помощью следующего параметра?

-Dfile.encoding=UTF-8
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...