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

时间:2014-06-07 09:04:49

标签: java xml utf-8

这是我在做的事情 -

  1. 从mongodb
  2. 获取文档(JSON)
  3. 将此键值写为XML
  4. 将此XML发送到Apache Solr以进行索引
  5. 以下是我如何做第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
    5. 所以这就是我想要解决的问题 -

      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");
      

1 个答案:

答案 0 :(得分:0)

Java String Objects没有编码。在此上下文中,与byte[]关联时,编码是有意义的。尝试这样的事情:

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

并发送这些字节。

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