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

Delphi Discussion :

Problème de jeu de caractères avec le composant FTP d'indy 10.6.2


Sujet :

Delphi

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 34
    Points
    34
    Par défaut Problème de jeu de caractères avec le composant FTP d'indy 10.6.2
    Bonjour

    Je viens de migrer programme écrit en Delphi 7 en Delphi Embarcadero 10.2.

    le but du programme est de déposer des fichiers sur un serveur FTP, paramétré en UTF8.

    Tout fonctionnait avant mais en 10.2 les répertoires créés et les fichiers déposés sur le serveur FTP ressortent avec les accents erronés.

    J'ai fait un simple programme pour reproduire le problème.


    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
     
    procedure TForm3.Button1Click(Sender: TObject);
    var s : string;
    begin
     
      IdFTP.Connect;
     
     
      IdFTP.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8;
     
      s := '/0007/Comptabilité';
     
      IdFTP.MakeDir(s);
     
      IdFTP.Disconnect;
     
    End;

    le répertoire créé apparait avec le nom : "Comptabilité"

    je pensais qu'en mettant IdFTP.IOHandler.DefStringEncoding := IndyTextEncoding_UTF8; ça fonctionnerait, mais non.

    Merci d'avance si quelqu'un peut m'aider

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    "Comptabilité" c'est bien de l'UTF8, on peut donc penser que idFTP fait son boulot, mais que le serveur lui ne décode pas le nom qu'il reçoit avant de créer le fichier
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2007
    Messages
    36
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 36
    Points : 34
    Points
    34
    Par défaut Problème des accents avec TidFTP
    Bonjour et merci pour votre aide
    J'ai contacté l'administrateur du site FTP : il m'a confirmé que le serveur FTP est configuré pour le UTF8.
    C'est comme si le client TIdFTP indiquait un mauvais encodage.
    le même programme fonctionne parfaitement en Delphi 7, les répertoires sont créés correctement

    j'essaierais bien le jeu de caractère ISO-8859-1 mais je ne trouve pas la syntaxe à spécifier pour l'idFTP

  4. #4
    Expert confirmé Avatar de sergio_is_back
    Homme Profil pro
    Responsable informatique, développeur tout-terrain
    Inscrit en
    Juin 2004
    Messages
    1 086
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Responsable informatique, développeur tout-terrain
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Juin 2004
    Messages : 1 086
    Points : 5 606
    Points
    5 606
    Par défaut
    Citation Envoyé par marc85 Voir le message
    Bonjour et merci pour votre aide
    J'ai contacté l'administrateur du site FTP : il m'a confirmé que le serveur FTP est configuré pour le UTF8.
    C'est comme si le client TIdFTP indiquait un mauvais encodage.
    le même programme fonctionne parfaitement en Delphi 7, les répertoires sont créés correctement

    j'essaierais bien le jeu de caractère ISO-8859-1 mais je ne trouve pas la syntaxe à spécifier pour l'idFTP
    Attention il y a une grosse différence entre Delphi 7 et Delphi 10.2

    Delphi 7 utilise des AnsiString (string=AnsiString) avec la page de code définie par Windows

    Delphi 10.2 utilise des WideString (string=WideString) dont les caractères sont codé en Unicode

    Si ton serveur FTP est en UTF-8 à l'autre bout cela veut dire qu'avec Delphi 7 il fait la conversion de la page de code Windows (Normalement ISO-8859-1) vers UTF-8
    Et si ça ne marche pas avec Delphi 10.2 cela veut dire qu'il s'attend à recevoir une chaine qui n'est pas Unicode et qu'il essaye de la convertir quand même

    Normalement Unicode n'est pas pris en charge dans le protocole FTP (même s'il fonctionne sur système de fichiers supportant l'UTF-8)
    Seul certains serveurs FTP l'on implémenté (mais pas tous) et pas toujours de façon standard.

    Il te faut convertir ton nom de fichier en ANSI avec la page de code Windows du jeu de caractères avant de l'envoyer

    Tu peux essayer comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    function WideStringToString(const Source: WideString; CodePage: UINT): AnsiString;
    ...
    begin
       ...
        // Convert source UTF-16 string (WideString) to the destination using the code-page
        strLen := WideCharToMultiByte(CodePage, 0,
            PWideChar(Source), Length(Source), //Source
            PAnsiChar(cpStr), strLen, //Destination
            nil, nil);
        ...
    end;
    Pour le jeux de caractères ISO-8859-1 la valeur de CodePage sera 28591 et pour la page de code Windows-1252 standard ce sera 1252

    Si tu maitrise la langue de Mme Maggie tu trouvera bien des explications et des exemples ici sur les différentes façon possibles d'aborder ce problème : https://stackoverflow.com/questions/...-to-ansistring

  5. #5
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 445
    Points
    28 445
    Par défaut
    Citation Envoyé par marc85 Voir le message
    Bonjour et merci pour votre aide
    J'ai contacté l'administrateur du site FTP : il m'a confirmé que le serveur FTP est configuré pour le UTF8.
    C'est comme si le client TIdFTP indiquait un mauvais encodage.
    le même programme fonctionne parfaitement en Delphi 7, les répertoires sont créés correctement

    j'essaierais bien le jeu de caractère ISO-8859-1 mais je ne trouve pas la syntaxe à spécifier pour l'idFTP
    il y a forcément une différence entre les deux versions, quand j'ai ce genre de problème je crée mon propre serveur qui répond à minima ce qu'il faut pour que le client fonctionne, et je trace toutes les entrées....je compare, et ensuite je sais ce qui cloche
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

Discussions similaires

  1. Problème déclaration jeu de caractères
    Par S-Kayp dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 24/10/2008, 19h44
  2. Problème de chaine de caractère avec "wscript.Run"
    Par vonemya dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 11/07/2008, 14h31
  3. Réponses: 1
    Dernier message: 12/02/2008, 09h29
  4. Problème de jeu de caractères MySQL 5.0
    Par GofAcid dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 26/05/2007, 00h19
  5. Problème Update Base de données avec les composants ADO
    Par lingli dans le forum Bases de données
    Réponses: 5
    Dernier message: 20/04/2006, 00h41

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