1

我确实有一个对象层次结构,我想使用“import javax.xml.bind.Marshaller”将 Java 对象转换为 xml。我的 java 类文件在“Cp1252”中编码,我无法更改它。

在我将属性设置为“München”并将其转换为 xml 之后,结果是 M?nchen,所以编码有问题:-)

在创建我的 java 类文件时,一切似乎都很好,因为 getCity 期间的值看起来不错。在由 XMLDirectMapping.setAttributeValueInObject 调用的 setCity-Method 中,vity 值已经被破坏:“Mnchen”。

我尝试使用属性 Marshaller.JAXB_ENCODING 设置几个不同的值,但由于这是输出编码,因此我无法正常工作。

我的假设是该错误必须与我的 vm 的默认编码或库的编码有关。但是,由于我不知道如果你们中的某个人以前遇到过这个问题,那就太好了。

如果您需要任何进一步的信息来解决它,请告诉我。不要仅仅因为这样的问题而花费半天或更长时间真是太好了。

谢谢

4

2 回答 2

1

注意: 我是EclipseLink JAXB (MOXy)的负责人,也是JAXB (JSR-22)专家组的成员。

在创建我的 java 类文件时,一切似乎都很好,因为 getCity 期间的值看起来不错。在由 XMLDirectMapping.setAttributeValueInObject 调用的 setCity-Method 中,vity 值已经被破坏:“Mnchen”。

基于此声明,我可以判断您正在使用 JAXB (JSR-222) 的 EclipseLink MOXy 实现。


您在哪里看到值编码不正确?有时,一个值在编辑器/调试器中的编码似乎不正确,但实际上它是正确的。如果您将结果编组到文件中,您会得到正确的结果吗?

于 2013-09-16T19:56:33.890 回答
1

如果没有代码,即使您打算正确实现它,也很难确定可能的小错误。

首先,我想建议您使用 UTF-8 作为编码,因为它更标准,如果我没记错的话,更跨平台,但这是默认设置。

其次,我将检查生成的文件是否确实在其 xml 标记中包含使用该编码进行编码。

第三,您可以使用系统属性 jaxb.encoding 更改编码

所以使用 -Djaxb.encoding=Cp1252 而不是 Marshaller.JAXB_ENCODING 启动您的应用程序!

于 2013-09-16T07:47:28.307 回答