将java字符串转换为包含有效utf-8字符的xml



我是这样做的-

  1. 从mongodb获取一个文档(JSON)
  2. 将键值写入XML
  3. 将此XML发送到Apache Solr进行索引

这是我如何做步骤#2

给定键为"key1",值为"value1",步骤#2输出

"<"+ key1 + ">" + value1 + "</"+ key1 + ">"

现在,当我发送这个XML到Solr,我得到的Stax异常,如-

  1. 无效的UTF-8起始字节0xb7
  2. 无效的UTF-8起始字节0xa0
  3. 无效的UTF-8起始字节0xb0
  4. 无效的UTF-8起始字节0x96

所以这是我想如何修复它-

key1New = new String(key1.getBytes("UTF-8"), "UTF-8");
value1New = new String(value1.getBytes("UTF-8"), "UTF-8");

应该这样做还是我应该这样做-

key1New = new String(key1.getBytes("UTF-8"), "ISO-8859-1");
value1New = new String(value1.getBytes("UTF-8"), "ISO-8859-1");

Java字符串对象没有编码。在这种情况下,与byte[]相关联的编码是有意义的。试试这样做:

byte[] utf8xmlBytes = originalxmlString.getBytes("UTF8");

并发送这些字节

编辑:另外,考虑Jon Skeet的评论。使用API创建XML通常是个好主意,除非您有非常少量的XML。

最新更新