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

Composants VCL Delphi Discussion :

Xml et caractères en exposant


Sujet :

Composants VCL Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 96
    Points : 50
    Points
    50
    Par défaut [Resolu]Xml et caractères en exposant
    Bonjour

    Je suis un débutant en programmation et je rencontre un problème lors de la création d'un fichier xml.
    Quand j'essaye de récupérer le texte "™" par exemple, lorsque j'ouvre le xml dans IE, j'ai un symbole à la place (petit rectangle). Lorsque j'ouvre le fichier xml avec le bloc note j'ai le code ™ à la place.

    J'ai cherché sur internet, mais j'ai pas trouvé de solution. Quelqu'un peut-il m'aider ?
    Merci.

    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
    36
    37
    38
    procedure TForm1.EcritureCatalogue(Fichier: TTraitement);
    Var
    Catalog,Properties, movie, Contents : IXMLNode;
    begin
    If  compteur = 0 then
    begin
    XMLDoc.Version:='1.0';
    XMLDoc.Encoding:='iso-8859-1';
    XMLDoc.DocumentElement := XMLDoc.CreateElement('AntMovieCatalog','');
              XMLDoc.DocumentElement.Attributes['Format'] := '35';
              XMLDoc.DocumentElement.Attributes['Version'] := '3.5.1 (2007-09-22)';
              XMLDoc.DocumentElement.Attributes['Date'] := '17/08/2008 17:44:15';
          Catalog:=XMLDoc.DocumentElement.AddChild('Catalog');
              Properties := Catalog.AddChild('Properties');
              Contents := Catalog.AddChild('Contents');
     
    end;
    compteur:=compteur+1;
    movie := XMLDoc.DocumentElement.ChildNodes.FindNode('Catalog').ChildNodes.FindNode('Contents').AddChild('Movie');
     
                  movie.Attributes['Number'] :=compteur;
                  movie.Attributes['Checked'] :='True';
                  movie.Attributes['Date'] := date;
                  movie.Attributes['OriginalTitle'] :=Fichier.OriginalTitle;
                  movie.Attributes['Length'] :=Fichier.Lengths;
                  movie.Attributes['URL'] :=Fichier.URL;
                  movie.Attributes['VideoFormat'] :=Fichier.VideoFormat;
                  movie.Attributes['VideoBitrate'] :=Fichier.VideoBitrate;
                  movie.Attributes['AudioFormat'] :=Fichier.ListeFormatAudio;
                  movie.Attributes['AudioBitrate'] :=Fichier.AudioBitrate;
                  movie.Attributes['Resolution'] :=Fichier.Resolution;
                  movie.Attributes['Framerate'] :=Fichier.Framerate;
                  movie.Attributes['Languages'] :=Fichier.ListeLanguagesAudio;
                  movie.Attributes['Subtitles'] :=Fichier.ListeLangauagesSousTitre;
                  movie.Attributes['Size'] :=Fichier.Size;
    ProgressBar1.Position:= ProgressBar1.Position + 1;
    fichier.destroy;
    end;

  2. #2
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    c'est normal, le "™" que tu utilises c'est le code 153 du charset 'window 1252' mais tu encode la page en 'iso-8859-1' où le 153 c'est un caractère de contrôle non imprimable donc un carré

    sinon passe à un encodage UTF8 mais ce affichera des combinaisons multicaratères ...
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 96
    Points : 50
    Points
    50
    Par défaut
    Merci de la réponse et désolé du retard (fêtes oblige)

    J'ai essayé avec

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    XMLDoc.Version:='1.0';
    XMLDoc.Encoding:='UTF-8';
    Mais les accents sont remplacés par des trucs bizarres et le "tm" ne passe pas, j'ai "â„¢" à la place

    Une autre idée ?
    Merci

  4. #4
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Bien sur, c'est un encodage, si tu passe de l'un à l'autre, il faut traduire les caractères ... ça ne se fait pas tout seul !

    pourquoi forces-tu l'encoding ? le fichier devrait le contenir !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 96
    Points : 50
    Points
    50
    Par défaut
    Salut

    Traduire les caractères, je veux bien mais comment faut-il s'y prendre ?

    pourquoi forces-tu l'encoding ? le fichier devrait le contenir !
    Ben, j'utilise TXmlDocument et quand j'utilise la procédure SaveToFile je n'ai pas les accents et les lettres en exposant. Mon xml n'a aucune entête.
    En rajoutant XMLDoc.Encoding:='iso-8859-1", s'obtient les accents.

  6. #6
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    Au fait, il ne faut pas utiliser Destroy mais Free pour libérer un objet ...

    Donc tu es en écriture, donc si tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    XMLDoc.Encoding:='UTF-8';
    tu auras tes caractères mais notepad ne pourra pas les lire, seul un navigateur comme FireFox, IE ... ou un éditeur XML gérant correctement le CharSet ira faire la transcription des Äx ... en caractère lisible, tu devrais te documenter sur ce qu'est un CharSet !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 96
    Points : 50
    Points
    50
    Par défaut
    Ok, merci pour le renseignement pour libérer un objet.

    En effet, IE lit parfaitement mon xml que ce soit en UTF-8 ou iso-8859-1.
    C'est le logiciel dans lequel je l'importe qui le lis mal.
    Quoique ... vu qu'il exporte et réimporte parfaitement ses xml en iso-8859-1.

  8. #8
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    C'est le logiciel dans lequel je l'importe qui le lis mal
    Un autre logiciel, qui n'est pas de ta conception ?

    peut-être qu'il ne transcrit que ce CharSet, c'est possible, en tout cas "™" ne pourra jamais passé en "iso-8859-1", tout simplement parce que le caractère n'existe pas dans cette table !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 96
    Points : 50
    Points
    50
    Par défaut
    Oui, logiciel qui n'est pas de moi.

    Par contre, il exporte le "TM" en xml en iso-8859-1. Petit carré lors de la visualisation sous IE et quand je réimporte ce même xml, il retranscrit parfaitement le "TM". Bizarre, non ?

  10. #10
    Expert éminent sénior
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    13 459
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 13 459
    Points : 24 873
    Points
    24 873
    Par défaut
    ça c'est parce qu'il doit forcer en fait le CharSet "Window 1252" qui est une extension de iso-8859-1 \ latin1, en ajoutant les caractères utiles qui manquent ! comme le "™"
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 96
    Points : 50
    Points
    50
    Par défaut
    Et donc je peux y faire quelque chose ou pas. Je dois encoder en quoi pourqu'il reconnaisse mon "TM" ?

  12. #12
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    96
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 96
    Points : 50
    Points
    50
    Par défaut
    Ok, merci, j'avais pas compris
    Il suffit de mettre encoding en windows-1252 et ca marche

    Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] [XML] problème caractères accentués
    Par Mathcoz dans le forum SQL Procédural
    Réponses: 8
    Dernier message: 31/01/2007, 18h53
  2. [C#] insertion de caractère en exposant dans une string
    Par papouAlain dans le forum Windows Forms
    Réponses: 9
    Dernier message: 11/07/2006, 15h45
  3. [DOM] Erreur parser fichier xml avec caractère spéciaux
    Par turcotm dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 19/06/2006, 09h01
  4. [FLASH MX2004] petit soucis XML et caractères spéciaux
    Par Isses dans le forum Intégration
    Réponses: 20
    Dernier message: 25/04/2006, 13h24
  5. delphi XML / HTML caractéres speciaux !
    Par adem dans le forum EDI
    Réponses: 2
    Dernier message: 29/08/2002, 17h48

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