adobe将特殊的西班牙语字符显示为“?”。我是否需要从adobe生命周期或Java端解决问题?我使用UTF-8
将XML转发到adobe生命周期。我是否需要将其编码为ISO-8859-1
之类的其他内容?这可能是什么问题?
例如,单词Certificación
在PDF中显示为Certificaci?n
。
在控制台中我看到单词看起来很好但是一旦我调用adobe获取PDF,我就会得到带有Certificaci等字样的PDF。
我使用
转换对象public static String obj2Xml(Class<?> className, Object obj)
throws ServiceException {
try {
JAXBContext jaxbContext = JAXBContext.newInstance(className);
Marshaller jaxbMarshaller = jaxbContext.createMarshaller();
StringWriter writer = new StringWriter();
jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,
Boolean.TRUE);
jaxbMarshaller.marshal(obj, writer);
return writer.getBuffer().toString();
} catch (JAXBException jaxbException) {
throw new ServiceException(jaxbException);
}
}
我已经使用过ISO-8859-1但我在HTML中测试过并且很好。我的问题如何将XML从UTF-8编码为ISO-8859-1以及adobe生命周期。正如我所提到的,我将XML传递给adobe,我们使用XSD,其中我改变如下
但仍然是控制台显示带有UTF-8的XML
答案 0 :(得分:0)
通过将编码更改为ISO-8859-1
,可能确实可以修复这些特殊字符的问题。 (正如你在问题中已经提到的那样。)
见帖子https://stackoverflow.com/a/3688273/3178834
在jaxbMarshaller.setProperty(Marshaller.JAXB_FORMATTED_OUTPUT,Boolean.TRUE);
之后
你必须添加:
jaxbMarshaller.setProperty(Marshaller.JAXB_ENCODING, "ISO-8859-1");
启用正确的编码。
另外,你必须将你的作家设置为相同的编码
OutputStreamWriter writer = new OutputStreamWriter(System.out, "ISO-8859-1");
像这样......
最后,这应该将您的XML编码为适当的ISO-8859-1,而不是UTF-8。