【发布时间】:2014-03-02 06:25:28
【问题描述】:
我有一个 UTF-8 XML(作为字符串传递),其中包含以下行:
<LongName>SomeName®</LongName>.
并且它应该在 XSLT 转换之后转换成另一个 UTF-8 XML。问题仅在于 ® 符号,它被转换为两个符号: ®
代码如下:
public String transform (String inputXML) throws TransformerException {
TransformerFactory factory = TransformerFactory.newInstance();
OutputStream os = new ByteArrayOutputStream();
InputStream transformationFile = getClass().getResourceAsStream(TRANSFORMER_PATH);
Transformer transformer = factory.newTransformer(new StreamSource(transformationFile));
InputStream is = new ByteArrayInputStream(inputXML.getBytes(Charset.forName("UTF-8")));
Source input = new StreamSource(is);
transformer.transform(input, new StreamResult(os));
return os.toString();
}
所以问题是 - 如何正确地将 ® 转换为 ® 从 UTF-8 到 UTF-8 XML?
【问题讨论】:
-
您似乎没有以 UTF8 格式读取源代码。
-
我应该怎么做才能修复它?
-
您正在读取存储在 inputXML 中的代码点序列的 UTF-8 编码字节。不要那样做:从字符串创建一个流并将其扔到转换中。
-
如何创建流而不弄乱字节?例如,
IOUtils.toInputStream(inputXML)的做法完全相同。 -
您的输入是一个字符串,因此您应该使用 StreamSource(Reader reader) 和来自该 inputXML 的 StringReader。
标签: java xml xslt utf-8 character-encoding