Аналогичный вопрос, но для UTF- размещен в stackoverflow. Что такое XML-спецификация и как мне обнаружить это?
Моя проблема: нужно ли мне удалить спецификацию из моих целевых файлов или оставить ее (поскольку это требуется для UTF-16). Вот краткая информация о ситуации (я опубликовал подробности в вопросе выше как ответ на первую часть):
- Пара файлов XML, каждый из которых имеет две строки: первая строка, если объявление XML, а вторая строка содержит все остальные теги или содержимое XML. (вторые строки создаются из всего файла XML, кроме первой строки).
- Теперь я объединяю несколько таких XML-файлов в один, две строки из исходного файла становятся одной строкой в целевом файле. Целевой файл имеет пару таких отдельных строк, представляющих законченный исходный файл XML.
Когда я читаю исходные файлы и записываю их в целевой файл, я использую следующий код на Java и могу создавать целевые файлы.
Вот код Java для чтения:
Reader reader = new InputStreamReader(new FileInputStream(fileName), Charset.forName("UTF-16")); BufferedReader br = new BufferedReader(reader); String line = br.readLine(); StringBuffer lineBuffer= new StringBuffer(); lineBuffer.append(line); lineBuffer.append("\r\n");
Вот код Java для написания:
Writer writer = new OutputStreamWriter(new FileOutputStream(
targetFile ,true), "UTF-16");
bw = new BufferedWriter(writer);
bw.write(lineBuffer.toString());
- Единственная проблема - когда я вижу целевой файл с разными редакторами, наблюдается разное поведение:
- Notepad ++ с поддержкой UTF-16 показывает это прекрасно.
- Блокнот Windows 7 показывает это без каких-либо специальных символов, но я вижу, что в целевом файле есть вторая строка с немного меньшим шрифтом.
- Notepad ++ без поддержки UTF-16 показывает точку над ‹в начале второй строки и другие строки после нее.
- На каком-нибудь другом редакторе? знак появляется перед строкой непосредственно перед тегом объявления xml, начиная со второй строки (первая строка - это файл)
Исходный файл:
<?xml version="1.0" encoding="UTF-16"?>
<OtherTags></OtherTags>
Целевой файл:
<?xml version="1.0" encoding="UTF-16"?><OtherTags></OtherTags>
?<?xml version="1.0" encoding="UTF-16"?><OtherTags></OtherTags>
?<?xml version="1.0" encoding="UTF-16"?><OtherTags></OtherTags>