@dikium

Как исправить кодировку при сохранении xml-файла в Java?

Здравствуйте, братья! Сегодня наткнулся на непонятную проблему. Я перевёл свой Java проект с maven'a на graddle. И всё хорошо, но почему-то XML файлы стали сохранятся в неправильной кодировке... При сохранении их в UTF-8 получается вот это:
<?xml version="1.0" encoding="utf-8"?>
<sky>
  <mechanism name="33">
    <abilities>
      <ability name="�����������1" />
      <ability name="22" />
    </abilities>
  </mechanism>
</sky>

А при сохранении в windows-1251 вот это:
<?xml version="1.0" encoding="windows-1251"?>
<sky>
  <mechanism name="33">
    <abilities>
      <ability name="Проверка" />
      <ability name="22" />
    </abilities>
  </mechanism>
</sky>

Эти файлы генерируются моей программой в автоматическом режиме с помощью этого метода:
public void save(String path) throws IOException
	{
		Document document = new Document();
		document.setRootElement(getXMLElement());

		XMLOutputter outputter = new XMLOutputter();
		outputter.setFormat(Format.getPrettyFormat().setEncoding("windows-1251")); //utf-8 здесь работает неверно
		outputter.output(document, new FileWriter(path));
	}

Т.е. при сохранении в windows-1251 всё нормально, а при utf-8 - кракозябры. Такого раньше не было. Сначала я подумал что это криво работает библиотека для парсинга XML. Я использовал dom4j. Но затем я перешел на jdom2 и ситуация осталась прежней. Сохраненный программой файл ей же не открывается. Однако если вручную исправить xml-файл, то всё нормально. Я подозреваю что хотя кодировка выставлена в utf-8 программа всё-равно пишет в windows-1251. Видимо проблема где-то в настройках проекта, но где - я ума не приложу. Я использую Intellij IDEA. Помогите пожалуйста!
  • Вопрос задан
  • 3180 просмотров
Решения вопроса 1
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы