Java ? UTF-16 xml文件中每行前面的符号。如何处理或保持现状?
类似的问题,但对于UTF-发布在stackoverflow中 我的问题是:我需要从目标文件中删除BOM还是保留BOM(因为UTF-16需要它)。以下是情况简介(我已将上述问题中的详细信息作为第一部分答案发布):Java ? UTF-16 xml文件中每行前面的符号。如何处理或保持现状?,java,encoding,xml-parsing,utf-16,byte-order-mark,Java,Encoding,Xml Parsing,Utf 16,Byte Order Mark,类似的问题,但对于UTF-发布在stackoverflow中 我的问题是:我需要从目标文件中删除BOM还是保留BOM(因为UTF-16需要它)。以下是情况简介(我已将上述问题中的详细信息作为第一部分答案发布): 两个XML文件,每个文件有两行,第一行是XML声明,第二行是所有其他标记或XML内容。(第二行是从整个XML文件创建的,第一行除外) 现在,我将几个这样的XML文件合并到一个文件中,源文件中的两行变成目标文件中的一行。目标文件有两行这样的单行线表示一个XML源文件 当我读取源文件并将它
- 两个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");
Writer writer = new OutputStreamWriter(new FileOutputStream(
targetFile ,true), "UTF-16");
bw = new BufferedWriter(writer);
bw.write(lineBuffer.toString());
- 唯一的问题是,当我看到具有不同编辑器的目标文件时,会看到不同的行为:
- 具有UTF-16支持的记事本++显示它非常好
- Windows7记事本显示它没有任何特殊字符,但我可以看到目标文件有第二行,字体稍小
- 不支持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>
?
?
您的目标文件绝不是XMLYes,它是许多XML文件的组合。这是要求。