Problème de sérialisation binaire
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
Code:
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();
}
}
} |
Mais si je change ma variable test en
string test="ecole€";
sur la ligne object XX = bf.Deserialize(stream); j'ai ce message d'erreur
Citation:
Une 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.
Mais si je laisse
string test="ecole";
Et qu'au lieu de mettre de l'UT7 je met de l'UTF8
Code:
1 2
| string data = new StreamReader(stream, Encoding.UTF8).ReadToEnd();
stream = new MemoryStream(UTF8Encoding.Default.GetBytes(data)); |
J'ai ceci comme erreur sur la ligne
object XX = bf.Deserialize(stream);
Citation:
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