Java Marshaller“;“输入编码”;

Java Marshaller“;“输入编码”;,java,xml,encoding,jaxb,Java,Xml,Encoding,Jaxb,我确实有一个对象层次结构,我想使用“importjavax.xml.bind.Marshaller”将其从Java对象转换为xml。我的java类文件是用“Cp1252”编码的,我无法更改 我将一个属性设置为类似“München”的值并将其转换为xml后,结果是M?nchen,因此编码错误:-) 在创建java类文件时,一切似乎都正常,因为getCity期间的值看起来不错。在由XMLDirectMapping.setAttributeValueInObject调用的setCity方法中,属性值已

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

我将一个属性设置为类似“München”的值并将其转换为xml后,结果是M?nchen,因此编码错误:-)

在创建java类文件时,一切似乎都正常,因为getCity期间的值看起来不错。在由XMLDirectMapping.setAttributeValueInObject调用的setCity方法中,属性值已断开:“M恩钦”

我尝试使用属性Marshaller.JAXB_ENCODING设置几个不同的值,但是由于这是输出编码,所以我不认为这是有效的

我的假设是,错误肯定与vm的默认编码或库的编码有关。但因为我不知道,如果你们中有人以前有过这个问题,那就太好了

请让我知道,如果你需要任何进一步的信息来解决它。如果不因为这样的问题而花半天或更长的时间,那就太好了


谢谢

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

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

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

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


因此,使用-Djaxb.encoding=Cp1252而不是Marshaller.JAXB_编码启动您的应用程序

注意:我是专家组的负责人和成员

在创建java类文件时,一切似乎都正常 getCity期间的值看起来不错。在setCity方法中,调用 通过XMLDirectMapping.setAttributeValueInObject,Victivity值为 已经坏了:“M恩钦”

根据这句话,我可以看出您正在使用JAXB(JSR-222)的EclipseLink MOXy实现



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

请检查此url以获取编码等其他选项,谢谢您的回答。事实上,我通过将输出结果写入一个文件解决了这个问题,因为调试器没有显示“正确”的值。现在一切正常。