将String转换为UTF-8并将其保存在文件中

时间:2016-01-01 20:59:18

标签: java xml utf-8 java-8

我在 Java 中有一个字符串,这个字符串代表一个XML文件的内容(我在其他过程中生成),我在编码中遇到问题,在标题中我有UTF-8的XML,但是当我试图解析它时,我得到了与编码有关的错误,确切地说:

Byte not valid 2 pf the sequence UTF-8 of 4 bytes

所以,我用 Notepad ++ 打开了文件,并说它是ANSI编码的。我想在将字符串转换为UTF-8之后将其保存到文件中,我用以下方法进行了编写:

byte[] encoded = content.getBytes(StandardCharsets.UTF_8);

但是,我如何将其保存在文件中?我希望用户能够在任何文本编辑器中打开XML文件,但现在我有字节。如何保存?

2 个答案:

答案 0 :(得分:0)

以下内容应该

// Ensure that the stated encoding in the XML is UTF-8:
//                              $1______________________ $2_____ $3_
content = content.replaceFirst("(<\\?xml[^>]+encoding=\")([^\"]*)(\")",
        "$1UTF-8$3");

byte[] encoded = content.getBytes(StandardCharsets.UTF_8);

Files.writeBytes(Paths.get("... .xml"), encoded);

对于编辑,需要一个支持UTF-8的编辑器(JEdit,Notepad ++) - 在Windows下。

Notepad ++应识别该文件,您可以使用正确的编码重新加载它。

答案 1 :(得分:0)

尝试Files.write(Paths.get("output.xml"), encoded);