无法翻译属于XML String中名称一部分的葡萄牙语字符

时间:2015-07-21 06:04:04

标签: java xml xslt javax.xml

我在翻译葡萄牙语字符方面遇到了麻烦,这些字符是XML String中字段的一部分。我正在使用变换方法,并使用iso-8859-1编码,我最终得到以下错误:

javax.xml.transform.TransformerException: com.sun.org.apache.xml.internal.utils.WrappedRuntimeException: Invalid byte 2 of 3-byte UTF-8 sequence.

这是我正在使用的代码。

String transformedMessage = "";

ByteArrayInputStream bais = null;
try {
    bais = new ByteArrayInputStream(
            inputMessage.getBytes("iso-8859-1"));
} catch (UnsupportedEncodingException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}
StreamSource xsltSource = new StreamSource(
        new ByteArrayInputStream(xsltTemplate.getBytes()));

StreamSource source = new StreamSource(bais,"iso-8859-1");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
StreamResult result = new StreamResult(baos);

TransformerFactory factory = TransformerFactory.newInstance();
Transformer transformer = factory.newTransformer(xsltSource);

transformer.transform(source, result);
transformedMessage = baos.toString();

return transformedMessage;

inputMessage的Name标签名为“Olá”(相关十六进制小数:4f 6c e1),whcih是葡萄牙语。

如果我们发送中文和泰文字符,相同的代码正在运行。你能帮我解决这个错误吗?

继承我正在使用的样本XMl。

<?xml version="1.0" encoding="UTF-8"?><TransactionProcessor> <Request> <MessageData> <MessageType>Authorization</MessageType> <IPAddress>187.150.23.80</IPAddress> <IssueDate>20150715</IssueDate> <TravelAgencyName>Sindicato Olá</TravelAgencyName> <TravelDate>20150716</TravelDate> <IssuingCarrierCode>IJ</IssuingCarrierCode> </TransactionData> </Request> </TransactionProcessor>

0 个答案:

没有答案