Я несколько раз ударился головой об эту стену, и теперь у меня есть ответ (я ненавижу таинственное поведение, особенно когда оно кажется случайным).
Я простопровел четырехсторонний тест (Unix и DOS, с двоичным заголовком / подписью спецификации EF BB BF и без него). Я обнаружил, что Eclipse не помещает двоичный заголовок спецификации в создаваемые им XML-файлы, точка. Если вы добавляете файл с заголовком объявления "<?xml ... ?>"
, он работает правильно ТОЛЬКО, если эта двоичная подпись ОТСУТСТВУЕТ.(Независимо от того, являются ли EOL Unix или DOS, не имеет значения).Если у вас есть обе формы заголовка, вы получите эту проблему.Вы можете иметь одно, другое или ни одного, но не оба одновременно.
Итак, если вы создаете новый файл XML в Eclipse, вы можете ожидать (в любом случае в 3.6 - 3.7.1), что у него нет двоичной спецификациизаголовок, и вы должны правильно поместить заголовок объявления "<?xml ... ?>"
, чтобы идентифицировать его как Unicode.Если вы ИМПОРТИРУЕТЕ проект, в котором есть файлы с двоичными сигнатурами заголовка спецификации, или используете внешний редактор, который любит их добавлять, вот где все это начинается.
В идеале, убедитесь, что файлы XML с декларацией неиметь двоичный заголовок спецификации перед их импортом ... в противном случае удаляйте этот заголовок объявления "<?xml ... ?>"
всякий раз, когда Eclipse жалуется ... если не считать удаления двоичного заголовка, это все, что вы можете легко сделать. (Было бы неплохо, если бы Eclipse обрабатывалсяэто более согласованно ... или, по крайней мере, дало вам возможность легко определить и устранить проблему, удалив двоичный заголовок спецификации ...)
- В случае сомнений, проверьте файл с помощьювнешний шестнадцатеричный редактор, желательно тот, который НЕ поддерживает Unicode (WinHex работал для меня, YMMV).Некоторые текстовые / шестнадцатеричные редакторы автоматически обнаруживают Unicode и могут автоматически добавлять заголовок, если у файла его нет.