近期工作当中遇到了一个XML读写操作的问题
该XML文件 的处理流程是: msXml -> JDom -> msXml (最早是由一个WIN平台的MFC程序生成该文件,再经过JAVA平台的程序处理、保存,最后再由一个Win平台的MFC程序进行 处理、保存)
问题来了。 最早生成的XML文件在Win平台下生成、读取、编辑、保存都是正常的。 但是转到由Java程序处理保存后,其中的某些字符就变成了 � 然后再由其它MFC程序处理、保存时,就出现异常了(由于异常,就导致保存的文件只写入了一半)
但这种转义后的XML文档再由JAVA程序去打开,又是完全可以的,读写 等都没有问题,只是那些转义后的字符一直都是以 口 字符的形式显示
经过排查,发觉 '–'该字符会被JAVA程序转义成� ,但显然该字符不是XML规范中定义的那些 转义符,但为什么会被写成转义的形式? 查了规范后发觉 该字符不在 XML规范中规定的Unicode 字符范围之内。 不知道是不是由于JDom对协议遵守的比较严格,而msXml在此基础上又做了扩展。
顺带说一句,我的XML文档编码格式为GB2312