我确实有一个对象层次结构,我希望使用“导入javax.xml.bind.Marshaller”将其从Java转换为xml。我的java类文件被封装在"Cp1252“中,我无法更改它。
将属性设置为"München“并将其转换为xml后,结果是M?nchen,因此编码错误:-)
在创建我的java类文件时,似乎一切正常,因为getCity期间的值看起来很好。在由XMLDirectMapping.setAttributeValueInObject调用的setCity-方法中,优先级值已经中断:"Mnchen“。
我尝试了几个不同的值来设置属性Marshaller.JAXB_ENCODING,但是由于这是输出编码,所以我不能使用它。
我的假设是,错误必须与我的vm的默认编码或库的编码有关。但既然我不知道,如果你们中有人以前有过这个问题,那就太好了。
如果你需要更多的信息来解决这个问题,请告诉我。如果仅仅因为这样的问题而不花半天或更多的时间,那就太好了。
谢谢
发布于 2013-09-16 19:56:33
备注:,我是EclipseLink JAXB (MOXy)的负责人,也是JAXB (JSR-22)专家组的成员。
在创建我的java类文件时,似乎一切正常,因为getCity期间的值看起来很好。在由XMLDirectMapping.setAttributeValueInObject调用的setCity-方法中,优先级值已经中断:"Mnchen“。
基于这一声明,我可以看出您正在使用JAXB (JSR-222)的EclipseLink MOXy实现。
您在哪里看到值被错误地编码?有时,一个值似乎在编辑器/调试器中被错误地编码,但实际上它是正确的。如果将结果编组到一个文件中,您是否得到了正确的结果?
发布于 2013-09-16 07:47:28
如果没有代码,就很难确定一个可能的小错误,即使您想要正确地实现它。
首先,我建议您使用UTF-8作为编码,因为它是更标准的,如果我没有弄错的话,更多的跨平台,但这是默认的。
其次,我将检查生成的文件是否确实包含在其xml标记中,这些标记是用该编码编码的。
第三,可以使用系统属性jaxb.encoding更改编码。
所以用-Djaxb.encoding=Cp1252而不是Marshaller.JAXB_ENCODING来启动你的应用吧!
https://stackoverflow.com/questions/18822611
复制相似问题