#java #encoding #ant #utf-8
#java #кодирование #ant #utf-8
Вопрос:
У меня есть следующая задача ant:
<target name="test">
<replace file="test.txt" token="smth" value="anything"/>
</target>
test.txt кодируется ли UTF-8. Проблема в том, что когда я запускаю эту задачу
она искажает некоторые символы UTF-8 (только некоторые из них, не все).
Я пытался использовать ant -Dfile.encoding=UTF-8 -buildfile=build.xml
,
и указанный build.xml кодирование <?xml version="1.0" encoding="UTF-8">
,
но проблема остается.
Как я могу заставить мою задачу Ant корректно работать с файлами в кодировке UTF?
Комментарии:
1. Например, что и как повреждает?
2. Некоторые нелатинские символы, но какие именно символы повреждены, зависит от конкретного компьютера.
3. Почему вы удалили свой комментарий из моего ответа? Пожалуйста, ответьте на вопросы, которые я задал в ответ на этот теперь удаленный комментарий.
4. Поскольку я понял, что это неправильно, но я не ожидал, что вы заметите это слишком быстро, поэтому я удалил это, извините.
Ответ №1:
Из документов для replace task в списке атрибутов:
Атрибут: encoding
Описание: Кодировка файлов, над которыми работает replace.
По умолчанию: Нет — по умолчанию используется кодировка JVM по умолчанию
Таким образом, используется кодировка платформы по умолчанию. Если вы хотите, чтобы он использовал UTF-8, просто измените свой вызов на:
<replace file="test.txt" token="smth" value="anything"
encoding="UTF-8" />
Комментарии:
1. @tsds: Тогда, вероятно, это не настоящий UTF-8. Откуда взялся файл и как вы обнаруживаете это повреждение? Можете ли вы привести примеры того, что изменилось с точки зрения двоичных данных? (Откройте файл до и после в шестнадцатеричном редакторе.)
2. да, это сработало, спасибо. Но я опубликовал упрощенный пример ant task, который я использую (вместо replace я использую свою пользовательскую задачу), я все еще не могу использовать ваше решение для своей пользовательской задачи ant, но вы дали мне подсказку.