J'ai une string que je veux sérialiser puis déserialiser.
Or quand je met un caractère spécial ca plante.
Code qui marche
Mais si je change ma variable test en
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35 using System; using System.Collections; using System.IO; using System.Runtime.Serialization.Formatters.Binary; using System.Text; using System.Xml; using System.Xml.Serialization; namespace MonProg { class Class1 { [STAThread] static void Main(string[] args) { string test="ecole"; MemoryStream stream = new MemoryStream(); BinaryFormatter bf = new BinaryFormatter(); bf.Serialize(stream,test); stream.Position = 0; string data = new StreamReader(stream, Encoding.UTF7).ReadToEnd(); stream = new MemoryStream(UTF7Encoding.Default.GetBytes(data)); bf = new BinaryFormatter(); stream.Position = 0; object XX = bf.Deserialize(stream); Console.WriteLine(XX); Console.ReadLine(); } } }
string test="ecole€";
sur la ligne object XX = bf.Deserialize(stream); j'ai ce message d'erreur
Mais si je laisseUne exception non gérée du type 'System.ArgumentException' s'est produite dans mscorlib.dll
Informations supplémentaires*: Un octet non valide a été trouvé à l'index 6.
string test="ecole";
Et qu'au lieu de mettre de l'UT7 je met de l'UTF8
J'ai ceci comme erreur sur la ligne
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 string data = new StreamReader(stream, Encoding.UTF8).ReadToEnd(); stream = new MemoryStream(UTF8Encoding.Default.GetBytes(data));
object XX = bf.Deserialize(stream);
Une exception non gérée du type 'System.Runtime.Serialization.SerializationException' s'est produite dans mscorlib.dll
Informations supplémentaires*: Le flux binaire ne contient pas de BinaryHeader valide, 0 raisons possibles*: flux non valide ou modification de la version de l'objet entre la sérialisation et la désérialisation.
Merci beaucoup pour vos éclaircissements
Partager