XStream генерирует огромные случайные строки мусора - PullRequest
0 голосов
/ 24 мая 2011

Я использовал xstream для сериализации объекта с именем и описанием (и другими полями).

class MyClass {
   String name;
   String description;
   .... 
   MyClass(String name, String description) {
    this.name = name; 
    this.description = description;
   }
}

Сериализованный файл выходит ОГРОМНЫМ, и поле заполняется ненужными символами, которые весят (в МБ) сотни МБ:

<myclass>
<name>Name</name>
<description>My name is ??sA¬A.A¡Aƒ?'A¢?,¬?¡Aƒ??sA,A¢Aƒ?'A+??TAƒ?? A¢?,¬?,¢Aƒ?'A¢?,¬A AƒA¢A¢??sA¬A¢??zA¢Aƒ?'A+??TAƒA¢A¢?
A,A¢Aƒ?'A,A¢AƒA¢A¢?,¬?¡A,A¬Aƒ??▌A,A¡Aƒ?'A¢?,¬?¡Aƒ??sA,A¬Aƒ?'A+??TAƒA¢A¢??sA¬A,A▌Aƒ?'A¢?,¬?¡Aƒ??s
?'A¢?,¬?¡Aƒ??sA,A¬Aƒ?'A+??TAƒ?? A¢?,¬?,¢Aƒ?'A¢?,¬A AƒA¢A¢??sA¬A¢??zA¢Aƒ?'A+??TAƒ??sA,A¢Aƒ?'A,A¢A
A,A¬Aƒ??▌A,A¡Aƒ?'A+??TAƒA¢A¢??sA¬A.A¡Aƒ?'A¢?,¬?¡Aƒ??sA,A¡Aƒ?'A+??TAƒ?? A¢?,¬?,¢Aƒ?'A¢?,¬A AƒA¢A¢
ƒ?? A¢?,¬?,¢Aƒ?'A,A¢AƒA¢A¢?,¬?¡A,A¬Aƒ??sA,A Aƒ?'A+??TAƒ??sA,A¢Aƒ?'A,A¢AƒA¢A¢??sA¬A.A¡Aƒ??sA,A¬Aƒ
'A+??TAƒA¢A¢??sA¬A.A¡Aƒ?'A¢?,¬?¡Aƒ??sA,A¢Aƒ?'A+??TAƒ?? A¢?,¬?,¢Aƒ?'A¢?,¬?¡Aƒ??sA,A¢Aƒ?'A+??TAƒ??</name></myclass>

1 Ответ

0 голосов
/ 25 мая 2011

Кажется, проблема в кодировке.

XStream не поддерживает определенную кодировку (каждый объект записывается с определенной кодировкой).С нами произошло то, что некоторые символы были закодированы в неправильном формате, а затем прочитаны в неправильном формате - так что каждый раз (мы не уверены, как) для каждого символа мы получали 2 «мусорных» символа.Таким образом, при каждом сохранении / загрузке размер удваивался по экспоненте ...

Решением было перейти с

XStream xstream = new XStream();
xstream.toXML(obj);

на

XStream xstream = new XStream();
Writer out = new BufferedWriter(new OutputStreamWriter(output, "UTF8"));
xstream.toXML(tax, out);
...