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

WinDev Discussion :

[W17] Projet Unicode & importation csv


Sujet :

WinDev

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Points : 7
    Points
    7
    Par défaut [W17] Projet Unicode & importation csv
    Bonjour
    Pour un projet multilingue qui utilise des chaines Unicode en éxecution, je tente d'importer un fichier csv dans une table mémoire.
    Hélas ça coince !
    Pourtant lorsque je change la configuration en chaines ANSI ça ira comme prévue.
    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
     
    NomFic est une chaîne = Res//"pay.CSV"		// Nom du fichier de test
    NumFic est un entier						// identifiant de manipulation du fichier de test
    maLigne est une chaîne 
    C1,C2,C3,C4,C5,C6,C7,C8 sont des chaînes		// Ligne en cours de lecture
    TableSupprimeTout(Table1)
    TableSupprimeTout(Table2)
    // Ouverture du fichier de test en lecture
    NumFic = fOuvre(NomFic,foLecture)
    i est un entier=1
    SI NumFic = -1 ALORS
    	// Une erreur a été détectée pendant l'ouverture du fichier
    	Erreur("Erreur d'ouverture du fichier "+NomFic,ErreurInfo())
    SINON
    	Info("Fichier ouvert  "+Numfic)// Lecture ligne par ligne du fichier
    	// Lecture du fichier
    	maligne = fLitLigne(NumFic)
    	Info(maligne)//table1..
    	TANTQUE maligne <> EOT
    		C1 = ExtraitChaîne(maligne,1,";")
    		C2 = ExtraitChaîne(maligne,2,";")
    		C3 = ExtraitChaîne(maligne,3,";")
    		C4 = ExtraitChaîne(maligne,4,";")
    		C5 = ExtraitChaîne(maligne,5,";")
    		C6 = ExtraitChaîne(maligne,6,";")
    		C7 = ExtraitChaîne(maligne,7,";")
    		C8 = ExtraitChaîne(maligne,8,";")
    		TableAjoute(Table1,c1+TAB+c2+TAB+c3+TAB+c4+TAB+c5+TAB+C6+TAB+C7+TAB+C8)
    		maligne = fLitLigne(Numfic)
    		i=i+1
    	FIN
     
    	// Fermeture du fichier
    	fFerme(NumFic)
    FIN
    Je veux bien garder ma config Unicode mais sans solution
    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    je tente d'importer un fichier csv dans une table mémoire.
    Hélas ça coince !
    Quel est le problème, donnes nous plus de détails sur ce qui ne va pas, le résultat attendu, le résultat obtenu ...


    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  3. #3
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Bonjour
    le problème c'est que la fameuse chaine "maligne" qui va me servir pour remplir une ligne du table est soit :
    - Une chaine Ansi (implicite d'après la config du projet) ==> parfait maligne contient quelques choses pareil "ch1;ch2;...RC" l'importation dudit .csv dans table1 se passe bien.
    - Une chaine Unicode (implicite d'après la config du projet) ==> ma maligne est illisible, elle contient du chinois ou presque "쟊⃎􈿇집쨻퇇컭유쟡쫡쟍" et l'importation n'aura pas lieu.
    Je veux bien que maligne demeure une chaine "Unicode" et que son contenu soit lisible pour mon bout de programme.

  4. #4
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Essayes avec la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maligne = AnsiVersUnicode(fLitLigne(NumFic))
    Bon dev
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  5. #5
    Membre actif
    Homme Profil pro
    Développeur COBOL
    Inscrit en
    Mai 2015
    Messages
    138
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur COBOL

    Informations forums :
    Inscription : Mai 2015
    Messages : 138
    Points : 270
    Points
    270
    Par défaut
    Bonjour,

    Peut-être que la fonction unicodeversansi peut t'aider. si c'est pas le cas peux tu mettre a disposition un bout de ton fichier genre 3 lignes

    si les données sont confidentielles remplace les par du bidon. Juste pour voir ce que l'on cherche a traiter.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par dsr57 Voir le message
    Bonjour

    Essayes avec la ligne suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maligne = AnsiVersUnicode(fLitLigne(NumFic))
    Bon dev
    Windev dit que maligne est déjà une chaine unicode !
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Erreur à la ligne 15 du traitement Clic sur Bouton_feuille.
    Vous avez appelé la fonction AnsiVersUnicode.
    Le passage du paramètre 1 a provoqué une erreur.
    Un élément de type 'chaîne UNICODE' ne peut pas être converti vers le type 'chaîne ANSI'.

  7. #7
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    as tu essayé de déclarer la chaine en unicode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maLigne est une chaîne unicode
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par rudolfrudolf Voir le message
    Bonjour,

    Peut-être que la fonction unicodeversansi peut t'aider. si c'est pas le cas peux tu mettre a disposition un bout de ton fichier genre 3 lignes

    si les données sont confidentielles remplace les par du bidon. Juste pour voir ce que l'on cherche a traiter.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maLigne = UnicodeVersAnsi(fLitLigne(NumFic),alphabetCourant)
    maligne contient presque tout le fichier .csv sous forme des "???????????????+??????"
    sinon voici un extrait de mon csv :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    "10118";"LICE";"L.F EN ANTHROPOLOGIE SOCIALE ET CULTURELLE";"الإجازة الأساسية في الأنتروبولوجيا الإجتماعية والث";"3";"1";"1";"N427"
    "10119";"LICE";"L.A EN SEMIOTIQUE";"الإجازة التطبيقية في لغة الإشارات";"3";"1";"1";"N427"
    "10120";"LICE";"L.F EN SOCIOLOGIE";"الإجازة الأساسية في عـلــم الاجتماع";"3";"1";"1";"N425"
    "10121";"LICE";"L.F EN PSYCHOLOGIE";"الإجازة الأساسية  في علم النـفـــس";"3";"1";"1";"N425"
    "10122";"LICE";"L.F EN  PHILOSOPHIE";"الإجازة الأساسية في الفـلســفــة";"3";"1";"1";"N425"
    "10123";"LICE";"L.F EN HISTOIRE";"الإجازة الأساسية في التاريخ";"3";"1";"1";"N425"
    "10124";"LICE";"L.F EN GEOGRAPHIE";"الإجازة الأساسية في الجغرافيا";"3";"1";"1";"N425"
    "10125";"LICE";"L.F. EN HISTOIRE DE L ’ART";"الإجازة الأساسية في تاريخ الفن";"3";"1";"1";"N484"
    ce csv peut être convertit dans un codage spécifique (dans l'etat actuel ANSI)

  9. #9
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par dsr57 Voir le message
    Bonjour

    as tu essayé de déclarer la chaine en unicode

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    maLigne est une chaîne unicode
    dans windev, la description de la configuration permet -entre autres- de choisir la nature des chaines de caractères soit ANSI ou UNICODE
    dans mon cas j'ai choisit UNICODE par conséquent tous les variables chaines de caractères en exécution sont Unicode sauf indication contraire.

  10. #10
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour

    Si on prend la ligne suivante du CSV :

    "10119";"LICE";"L.A EN SEMIOTIQUE";"الإجازة التطبيقية في لغة الإشارات";"3";"1";"1";"N427"
    Avec le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C1 = ExtraitChaîne(maligne,1,";")
    C2 = ExtraitChaîne(maligne,2,";")
    C3 = ExtraitChaîne(maligne,3,";")
    C4 = ExtraitChaîne(maligne,4,";")
    C5 = ExtraitChaîne(maligne,5,";")
    C6 = ExtraitChaîne(maligne,6,";")
    C7 = ExtraitChaîne(maligne,7,";")
    C8 = ExtraitChaîne(maligne,8,";")
    on obtiendra :

    C1 = 10119
    C2 = "LICE"
    C3 = "L.A EN SEMIOTIQUE"
    C4 = "&#1575
    C5 = &#1604
    C6 = &#1573
    C7 = &#1573
    C8 = &#1580

    Ton problème peut venir du caractère ";" utilisé dans les chaines UNICODE.
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  11. #11
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Re Bonjour
    j'ai changé le séparateur
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    		C1 = ExtraitChaîne(maLigne,1,",")
    		C2 = ExtraitChaîne(maLigne,2,",")
    		C3 = ExtraitChaîne(maLigne,3,",")
    		C4 = ExtraitChaîne(maLigne,4,",")
    		C5 = ExtraitChaîne(maLigne,5,",")
    		C6 = ExtraitChaîne(maLigne,6,",")
    		C7 = ExtraitChaîne(maLigne,7,",")
    		C8 = ExtraitChaîne(maLigne,8,",")
    et par conséquent le fichier csv (utf8)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    10101,LICE,L.F EN LANGUE LITTERATURE ET CIVILISATION ARABE,الإجازة الأساسية في اللغة والآداب و الحضارة العربي,3,1,1,N425
    10102,LICE,L.F EN  LANGUE LITTERATURE ET CIVILISATION ANGLAI,الإجازة الأساسية في اللغة والآداب والحضارة الإنقلي,3,1,1,N425
    10103,LICE,L.F EN  LANGUE LITTERATURE ET CIVILISATION FRANCA,الإجازة الأساسية في اللغة والحضارة والأدب الفرنسي,3,1,1,N425
    10104,LICE,L.F EN  LANGUE LITTERATURE ET CIVILISATION ESPAGN,الإجازة الأساسية في اللغة والآداب والحضارة الإسبان,3,1,1,N460
    10105,LICE,L.F EN  LANGUE LITTERATURE ET CIVILISATION  ITALI,الإجازة الأساسية في اللغة والآداب والحضارة الإيطال,3,1,1,N460
    10106,LICE,L.F EN  LANGUE LITTERATURE ET CIVILISATION ALLEMA,الإجازة الأساسية في اللغة والآداب والحضارة الألمان,3,1,1,N460
    10107,LICE,L.F EN  LANGUE LITTERATURE ET CIVILISATION RUSSE,الإجازة الأساسية في اللغة والآداب و الحضارة الروسي,3,1,1,N484
    10108,LICE,L.F EN LANGUE LITT?RATURE ET CIVILISATION CHINOIS,الإجازة الأساسية في اللغة والآداب و الحضارة الصيني,3,1,1,N484
    10118,LICE,L.F EN ANTHROPOLOGIE SOCIALE ET CULTURELLE,الإجازة الأساسية في الأنتروبولوجيا الإجتماعية والث,3,1,1,N427
    mais maligne continue à bouffer la totalité du fichier csv (elle contient des ??????????) pourtant j'ai bien vérifié que chaque ligne s'achève avec CRLF excepté la dernière EOT.

  12. #12
    Rédacteur/Modérateur

    Avatar de dsr57
    Homme Profil pro
    Analyste programmeur senior
    Inscrit en
    Octobre 2003
    Messages
    1 139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Analyste programmeur senior
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 139
    Points : 4 681
    Points
    4 681
    Billets dans le blog
    22
    Par défaut
    Bonjour


    mais maligne continue à bouffer la totalité du fichier csv
    La première instrcuction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    maligne = fLitLigne(NumFic)
    Charge l'ensemble du fichier dans la variable maligne

    Comment génères tu le fichier CSV ?
    ------------------------------------------------------------------------------------------------------------------------------------------
    Mon message vous a aidé, pensez à remercier . La discussion est résolue, n'oubliez pas le tag
    ------------------------------------------------------------------------------------------------------------------------------------------
    Site perso : Formation, Expérience, Réalisations, ...
    Blog : Le Blog de DSR57 - Programmation WinDev

  13. #13
    Expert confirmé
    Homme Profil pro
    ?
    Inscrit en
    Juillet 2002
    Messages
    2 378
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : ?

    Informations forums :
    Inscription : Juillet 2002
    Messages : 2 378
    Points : 4 494
    Points
    4 494
    Par défaut
    Bonjour

    J'ai survolé ce post mais si le 1er fLitLigne charge tout le fichier c'est qu'en fin de ligne il n'y a pas de RC
    Tu dois avoir juste un LF (soit Caract(10))

    La fonction fLitLigne permet d'indiquer le séparateur de lignes

    <Résultat> = fLitLigne(<Identifiant du fichier> [, <Séparateur>])

  14. #14
    Futur Membre du Club
    Homme Profil pro
    Enseignant
    Inscrit en
    Février 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Février 2012
    Messages : 10
    Points : 7
    Points
    7
    Par défaut
    Mes sincères excuses : j'ai abondonné le fil de discusion sans dire que je part en vacances
    Après quelques essais aujourd'hui, je me rends compte que le projet unicode ne supporte pas des fichiers csv en utf8
    Bref j'ai importé le fichier csv encodé en ANSI (dans mon cas le windows-1256) et surtout mettre comme séparateur le point-virgule
    Bien évident sans entourer les colonnes de guillemts (sinon ce caractère fara partie du champs)
    Merci pour votre aide précieuse et disponibilté.

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

Discussions similaires

  1. Import CSV sous Excel, garder les 0 inutile
    Par ePoX dans le forum Excel
    Réponses: 4
    Dernier message: 26/01/2009, 17h25
  2. Importer CSV dans MySQL
    Par The_freeman dans le forum Administration
    Réponses: 6
    Dernier message: 14/02/2006, 23h18
  3. import csv décimale
    Par gIch dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/12/2005, 13h46
  4. Importation CSV vers base de données
    Par Brice Yao dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/06/2005, 14h42
  5. [projet Tomcat][jar] Importer un .jar à un projet Web
    Par El Saigneur dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 24/06/2005, 18h06

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