gpt4 book ai didi

javax.xml.transform.TransformerFactory Unicode 问题 - Java

转载 作者:行者123 更新时间:2023-12-01 08:51:17 24 4
gpt4 key购买 nike

我们无法正确转换 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;
}

这是我得到的输出,代替 ガネーシュ

最佳答案

This is the output i'm getting ガãƒ?ーシュ in place of ガネーシュ

这告诉您,在此过程中的某个地方,某个软件正在读取 UTF-8 格式的数据,该软件认为它正在读取 Latin-1。它没有告诉您这是在过程中发生的。所以你需要分而治之 - 你需要找到数据正确的最后一个点。

首先确定问题是在转换之前还是之后。如果您使用的是 XSLT 2.0 处理器,那么这非常简单:您可以使用 ` 来查看 XSLT 处理器已给出的字符串。对于 1.0 处理器来说有点棘手,但是您可以使用 substring($in, $n, 1) 来提取第 n 个字符,这应该会给您一个线索。

我怀疑这是输入。首先,将非 ASCII 字符放入 Java 字符串文本中总是有点危险,因为如果您不太小心正确配置所有内容,则到源存储库的往返很容易损坏代码。其次,如果字符串是正确的,那么使用 StringReader 读取它会比将其转换为字节流更安全。尝试:

transformer.transform(new StreamSource(
new StringReader(SXmlFileData)),outResult);

关于javax.xml.transform.TransformerFactory Unicode 问题 - Java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42388711/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com