我是这样做的-
- 从mongodb获取一个文档(JSON)
- 将键值写入XML
- 将此XML发送到Apache Solr进行索引
这是我如何做步骤#2
给定键为"key1",值为"value1",步骤#2输出
"<"+ key1 + ">" + value1 + "</"+ key1 + ">"
现在,当我发送这个XML到Solr,我得到的Stax异常,如-
- 无效的UTF-8起始字节0xb7
- 无效的UTF-8起始字节0xa0
- 无效的UTF-8起始字节0xb0
- 无效的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。