是否有可能在Windows机器上生成和序列化的base 64字符串在Linux机器上的另一个base 64字符串中反序列化,该字符串不等于windows上的字符串。使用平台编码在java中实现。所有其他非基础64字符串都很好。
DynamicObject do = new DynamicObject();
do.setBase64Property("MxSgTy==");
NonDynamicProperty ndp = new NonDynamicProperty();
ndp.setString("SimpleString");
打开对象输出流
ObjectOutputStream oo = new ObjectOutputStream(new FileOutputStream("file.ser"));
oo.writeObject(do);
oo.writeObject(ndp);
// close
在服务器端(Linux平台)
ObjectInputStream oi = new ObjectInputStream(new FileInputStream("file.ser"));
Object obj = oi.readObject();
if(obj instanceof NonDynamicProperty){
NonDynamicProperty ndp = (NonDynamicProperty)obj;
ndp.getString();// outputs SimpleString
}else{
DynamicObject do = (DynamicObject)obj;
do.getBase64Property(); // yields uUsYjdh== for example
}
base64字符串实际上是对字符串属性的加密版本进行编码的结果。执行此操作的代码是一个非常古老的错误,但我很想知道这个错误有多深。知道是否有可能以任何理由改变这个字符串值将极大地帮助我理解并使我更接近解决问题。