【问题标题】:Convert a java string to an xml that contains valid utf-8 characters将 java 字符串转换为包含有效 utf-8 字符的 xml
【发布时间】:2014-06-07 09:04:49
【问题描述】:

这就是我正在做的 -

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

【问题讨论】:

  • 试试new String(bytes, Charset.forName("UTF-8"))
  • 不要一开始就自己创建 XML - 使用 XML API。如果您已经将数据获取为文本,只需将其保留为文本即可。不要在不需要的时候开始乱搞二进制形式。

标签: java xml utf-8


【解决方案1】:

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

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

并发送这些字节。

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

【讨论】:

    猜你喜欢
    • 2013-03-02
    • 1970-01-01
    • 2018-09-14
    • 1970-01-01
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-07
    相关资源
    最近更新 更多