【发布时间】:2017-02-22 10:32:19
【问题描述】:
我们无法正确转换 Unicode 字符。我们以 XML 格式提供输入,当我们尝试转换时,我们无法取回原始字符串。
这是我正在使用的代码,
StringCarrier OStringCarrier = new StringCarrier();
String SXmlFileData= "<export_candidate_response><criteria><output><lastname>Bhagavath</lastname><firstname>ガネーシュ</firstname></output></export_candidate_response>";
String SResult = "";
try
{
TransformerFactory tFactory = TransformerFactory.newInstance();
Transformer transformer = tFactory.newTransformer(new StreamSource(SXslFileName));
transformer.setOutputProperty(OutputKeys.ENCODING, "UTF8");
OutputStream xmlResult = (OutputStream)new ByteArrayOutputStream();
StreamResult outResult = new StreamResult(xmlResult);
transformer.transform(new StreamSource(
new ByteArrayInputStream(SXmlFileData.getBytes("UTF8"))),outResult);
SResult = outResult.getOutputStream().toString();
}
catch (TransformerConfigurationException OException)
{
//Exception has been thrown
OException.printStackTrace();
return OStringCarrier;
}
catch (TransformerException OException)
{
//Exception has been thrown
OException.printStackTrace();
return OStringCarrier;
}
catch (Exception OException)
{
//Exception has been thrown
OException.printStackTrace();
return OStringCarrier;
}
这是我得到的输出 ガãƒ?ーシュ 代替 ガネーシュ
【问题讨论】:
-
这里缺少代码。你有一个
else,但没有if,一个try,但没有catch。如果您将输出写入String,我很确定输出编码是无关紧要的。您如何观察编码问题? -
我已经更新了代码,你可以检查n让我知道
-
谢谢你,但你还没有回答我的问题。你怎么看结果?你是把它写到文件里吗?到控制台?你在调试器中查看它吗?
-
将其写入文件..它没有正确写入..然后我调试了代码...transformer.transform(new StreamSource( new ByteArrayInputStream(SXmlFileData.getBytes("UTF8"))),结果);在这段代码之后,它将 unicode 字符转换为其他字符
-
您将其写入文件的代码在哪里?它不在这里。
标签: java xml unicode transform