IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Problème de sérialisation binaire


Sujet :

C#

  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2004
    Messages
    849
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2004
    Messages : 849
    Par défaut 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 : 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();
    
    		}
    	}
    }
    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

    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 : 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));
    J'ai ceci comme erreur sur la ligne

    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

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Essaie plutôt avec Encoding.Unicode (c'est l'encodage par défaut des chaînes en C#)
    Là tu sérialises en utilisant implicitement l'encodage Unicode, et tu essaies de désérialiser en utilisant un autre encodage, donc ça ne peut pas marcher...

Discussions similaires

  1. [Débutant] Problème de sérialisation collection
    Par Michel Hubert dans le forum VC++ .NET
    Réponses: 1
    Dernier message: 21/12/2006, 15h17
  2. problème de sérialisation
    Par yoyomc dans le forum Langage
    Réponses: 5
    Dernier message: 17/12/2006, 23h02
  3. Réponses: 4
    Dernier message: 12/12/2006, 10h22
  4. Problème de sérialisation
    Par CheryBen dans le forum Entrée/Sortie
    Réponses: 18
    Dernier message: 15/09/2005, 11h55
  5. [PHP - MSSQL] Problème d'upload / binaire
    Par noiserie dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 25/07/2005, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo