OVH Cloud OVH Cloud

disparition des accents dans une chaine string

13 réponses
Avatar
marc.dufresne
bonsoir à toutes et tous
j'ai fait un fichier txt dans lequel il y a la liste de fichier obtenu par
un dir.
mes fichier ont des carctères accentués, dans le fichier texte tous les
carctères sont correctement écrit avec les accents.
j'essaye de faire un programme qui lit toutes les lignes du fichier et les
mettres dans une variable , mais lorsque je veux lire cette variable je ne
retrouve pas tous les carractères , les accents entre autres. donc quand je
veut retransmettre cette variable pour atteindre le fichier , j'ai le
message fichier inexistant.
alors comment faire pour garder correctement tous les carractères

j'espère être clair
merci d'avance

10 réponses

1 2
Avatar
Thierry DEMAN [MVP]
Bonsoir,

les accents ne sont pas codés de la même manière par "dir" (jeu de
caractères IBM) et par windows !

Pour éviter des problèmes de conversions, souvent source d'erreur, il est
préférable de toujours générer et utiliser les noms de dossiers/fichiers à
partir du même outil.

=> gérer des listes à partir d'un outil windows, puis les traiter à partir
d'un programme Windows
=> créer des listes à partir d'un outil/d'une commande "DOS" et les traiter
à partir d'un programme "DOS".

Si cela est vraiment nécessaire, le site de Jean-Claude Bellamy contient des
fonctions de conversions.

A bientôt,

--
Thierry DEMAN-BARCELÒ
MVP Exchange, SQL/Server
MCSE2003+M+S,MCSE+I,MCDBA
http://ofniorcim.dyndns.org
http://faqexchange.dyndns.org
"marc.dufresne" wrote in message
news:44189432$0$7886$
bonsoir à toutes et tous
j'ai fait un fichier txt dans lequel il y a la liste de fichier obtenu par
un dir.
mes fichier ont des carctères accentués, dans le fichier texte tous les
carctères sont correctement écrit avec les accents.
j'essaye de faire un programme qui lit toutes les lignes du fichier et les
mettres dans une variable , mais lorsque je veux lire cette variable je ne
retrouve pas tous les carractères , les accents entre autres. donc quand
je veut retransmettre cette variable pour atteindre le fichier , j'ai le
message fichier inexistant.
alors comment faire pour garder correctement tous les carractères

j'espère être clair
merci d'avance



Avatar
Fred
Dans : news:44189432$0$7886$,
marc.dufresne disait :
bonsoir à toutes et tous
j'ai fait un fichier txt dans lequel il y a la liste de fichier
obtenu par un dir.



Bonsoir,

en complément de la réponse de Thierry DEMAN.
Dans l'invite de commande, fais un CHCP 1252 avant de faire le DIR.
Cela devrait coller ensuite.
(fonctionne sous 2000 et XP, pas testé avec d'autres)

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Avatar
marc.dufresne
bonsoir
si je comprends bien ill faudrait que je fasse un dir de mes répertoires à
partir de visual basic??
tu aurais la commande??
merci

"Thierry DEMAN [MVP]" a écrit dans le message
de news: ehF$
Bonsoir,

les accents ne sont pas codés de la même manière par "dir" (jeu de
caractères IBM) et par windows !

Pour éviter des problèmes de conversions, souvent source d'erreur, il est
préférable de toujours générer et utiliser les noms de dossiers/fichiers à
partir du même outil.

=> gérer des listes à partir d'un outil windows, puis les traiter à partir
d'un programme Windows
=> créer des listes à partir d'un outil/d'une commande "DOS" et les
traiter à partir d'un programme "DOS".

Si cela est vraiment nécessaire, le site de Jean-Claude Bellamy contient
des fonctions de conversions.

A bientôt,

--
Thierry DEMAN-BARCELÒ
MVP Exchange, SQL/Server
MCSE2003+M+S,MCSE+I,MCDBA
http://ofniorcim.dyndns.org
http://faqexchange.dyndns.org
"marc.dufresne" wrote in message
news:44189432$0$7886$
bonsoir à toutes et tous
j'ai fait un fichier txt dans lequel il y a la liste de fichier obtenu
par un dir.
mes fichier ont des carctères accentués, dans le fichier texte tous les
carctères sont correctement écrit avec les accents.
j'essaye de faire un programme qui lit toutes les lignes du fichier et
les mettres dans une variable , mais lorsque je veux lire cette variable
je ne retrouve pas tous les carractères , les accents entre autres. donc
quand je veut retransmettre cette variable pour atteindre le fichier ,
j'ai le message fichier inexistant.
alors comment faire pour garder correctement tous les carractères

j'espère être clair
merci d'avance







Avatar
marc.dufresne
bonsoir à tous
apparement c'est résolu
je ne sais pas si c'est avec la commande de "fred" CHCP1252 car j'ai un peu
m"" dans mes commandes et j'ai repassé le fichier texte avec la police
courrier et ça fonctionne correctement

merci à vous tous
bonne nuit

"Fred" a écrit dans le message de news:
e%
Dans : news:44189432$0$7886$,
marc.dufresne disait :
bonsoir à toutes et tous
j'ai fait un fichier txt dans lequel il y a la liste de fichier
obtenu par un dir.



Bonsoir,

en complément de la réponse de Thierry DEMAN.
Dans l'invite de commande, fais un CHCP 1252 avant de faire le DIR.
Cela devrait coller ensuite.
(fonctionne sous 2000 et XP, pas testé avec d'autres)

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
Gloops
marc.dufresne a écrit :
bonsoir
si je comprends bien ill faudrait que je fasse un dir de mes répertoires à
partir de visual basic??
tu aurais la commande??
merci



Salut,

Si tu trouves plus pratique la commande DIR du mode lignes de commandes
(lancée avant le programme, ou par un Shell), vu qu'elle retourne le
résultat en une fois, tu peux tout-à-fait t'en servir, simplement il
faut convertir le résultat.

Voir là :
http://jc.bellamy.free.fr/fr/vbsdownload.html#oem2ansi

Voici maintenant la syntaxe VB, pour lister le contenu de C: :

Dim F As String
F = Dir("C:")
While F <> ""
Debug.Print F
F = Dir
Wend

Attention, Dir sans argument retourne le fichier suivant, d'une liste
initiée au premier appel, avec un argument.

Ceci implique donc qu'on ne peut utiliser cette commande dans une
fonction récursive : on ne peut avoir qu'un listage en cours.

On peut stocker la liste d'un répertoire dans un tableau, ça signifie
qu'il faut ou utiliser un tableau dynamique, ou parcourir deux fois la
boucle, une fois pour dimensionner, une fois pour renseigner.

Un petit coup d'œil à l'aide de Dir montre qu'un deuxième argument
permet d'avoir aussi les répertoires.



Dans pas longtemps je vais poser une question là-dessus, vu que j'ai
fait une sauvegarde avec, et certains fichiers n'ont pas été traités,
bizarre.
Avatar
marc.dufresne
BONJOUR
je confirme c'est bien grace à la commande CHCP 1252 qui change la page de
code de la console
merci encore
j'ai vu aussi dans le message suivant que JCB avait un script pour palier
cet inconvénient, j'ai essayé et c'est OK
je crois que c'est une méthode qui fonctionne sur tous les systèmes.

merci à tous


"Fred" a écrit dans le message de news:
e%
Dans : news:44189432$0$7886$,
marc.dufresne disait :
bonsoir à toutes et tous
j'ai fait un fichier txt dans lequel il y a la liste de fichier
obtenu par un dir.



Bonsoir,

en complément de la réponse de Thierry DEMAN.
Dans l'invite de commande, fais un CHCP 1252 avant de faire le DIR.
Cela devrait coller ensuite.
(fonctionne sous 2000 et XP, pas testé avec d'autres)

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT


Avatar
marc.dufresne
bonjour
j'ai testé le oem2ansi de JCB et c'est impécable!
je vais

"Gloops" a écrit dans le message de news:

marc.dufresne a écrit :
bonsoir
si je comprends bien ill faudrait que je fasse un dir de mes répertoires
à partir de visual basic??
tu aurais la commande??
merci



Salut,

Si tu trouves plus pratique la commande DIR du mode lignes de commandes
(lancée avant le programme, ou par un Shell), vu qu'elle retourne le
résultat en une fois, tu peux tout-à-fait t'en servir, simplement il faut
convertir le résultat.

Voir là :
http://jc.bellamy.free.fr/fr/vbsdownload.html#oem2ansi

Voici maintenant la syntaxe VB, pour lister le contenu de C: :

Dim F As String
F = Dir("C:")
While F <> ""
Debug.Print F
F = Dir
Wend

Attention, Dir sans argument retourne le fichier suivant, d'une liste
initiée au premier appel, avec un argument.

Ceci implique donc qu'on ne peut utiliser cette commande dans une fonction
récursive : on ne peut avoir qu'un listage en cours.

On peut stocker la liste d'un répertoire dans un tableau, ça signifie
qu'il faut ou utiliser un tableau dynamique, ou parcourir deux fois la
boucle, une fois pour dimensionner, une fois pour renseigner.

Un petit coup d'œil à l'aide de Dir montre qu'un deuxième argument permet
d'avoir aussi les répertoires.



Dans pas longtemps je vais poser une question là-dessus, vu que j'ai fait
une sauvegarde avec, et certains fichiers n'ont pas été traités, bizarre.


Avatar
marc.dufresne
bonjour
la commande dir de vb n'est pas très performante surtout que j'explore aussi
des sous répertoire.
donc je j'utilisera plustot le oem2ansi de JCB, mais comment lancer cette
commande dans vb ?
j'ai essayé avec shell mais apparement ce n'est pas bon comme commande
merci


"Gloops" a écrit dans le message de news:

marc.dufresne a écrit :
bonsoir
si je comprends bien ill faudrait que je fasse un dir de mes répertoires
à partir de visual basic??
tu aurais la commande??
merci



Salut,

Si tu trouves plus pratique la commande DIR du mode lignes de commandes
(lancée avant le programme, ou par un Shell), vu qu'elle retourne le
résultat en une fois, tu peux tout-à-fait t'en servir, simplement il faut
convertir le résultat.

Voir là :
http://jc.bellamy.free.fr/fr/vbsdownload.html#oem2ansi

Voici maintenant la syntaxe VB, pour lister le contenu de C: :

Dim F As String
F = Dir("C:")
While F <> ""
Debug.Print F
F = Dir
Wend

Attention, Dir sans argument retourne le fichier suivant, d'une liste
initiée au premier appel, avec un argument.

Ceci implique donc qu'on ne peut utiliser cette commande dans une fonction
récursive : on ne peut avoir qu'un listage en cours.

On peut stocker la liste d'un répertoire dans un tableau, ça signifie
qu'il faut ou utiliser un tableau dynamique, ou parcourir deux fois la
boucle, une fois pour dimensionner, une fois pour renseigner.

Un petit coup d'œil à l'aide de Dir montre qu'un deuxième argument permet
d'avoir aussi les répertoires.



Dans pas longtemps je vais poser une question là-dessus, vu que j'ai fait
une sauvegarde avec, et certains fichiers n'ont pas été traités, bizarre.


Avatar
Gloops
Hello,

En principe, si tu doubles-cliques dessus, il t'explique tout.

Sinon si je ne m'abuse c'est aussi expliqué sur le site.

_______________________
marc.dufresne a écrit :
bonjour
la commande dir de vb n'est pas très performante surtout que j'explore aussi
des sous répertoire.
donc je j'utilisera plustot le oem2ansi de JCB, mais comment lancer cette
commande dans vb ?
j'ai essayé avec shell mais apparement ce n'est pas bon comme commande
merci


"Gloops" a écrit dans le message de news:

marc.dufresne a écrit :
bonsoir
si je comprends bien ill faudrait que je fasse un dir de mes répertoires
à partir de visual basic??
tu aurais la commande??
merci


Salut,

Si tu trouves plus pratique la commande DIR du mode lignes de commandes
(lancée avant le programme, ou par un Shell), vu qu'elle retourne le
résultat en une fois, tu peux tout-à-fait t'en servir, simplement il faut
convertir le résultat.

Voir là :
http://jc.bellamy.free.fr/fr/vbsdownload.html#oem2ansi

Voici maintenant la syntaxe VB, pour lister le contenu de C: :

Dim F As String
F = Dir("C:")
While F <> ""
Debug.Print F
F = Dir
Wend

Attention, Dir sans argument retourne le fichier suivant, d'une liste
initiée au premier appel, avec un argument.

Ceci implique donc qu'on ne peut utiliser cette commande dans une fonction
récursive : on ne peut avoir qu'un listage en cours.

On peut stocker la liste d'un répertoire dans un tableau, ça signifie
qu'il faut ou utiliser un tableau dynamique, ou parcourir deux fois la
boucle, une fois pour dimensionner, une fois pour renseigner.

Un petit coup d'œil à l'aide de Dir montre qu'un deuxième argument permet
d'avoir aussi les répertoires.



Dans pas longtemps je vais poser une question là-dessus, vu que j'ai fait
une sauvegarde avec, et certains fichiers n'ont pas été traités, bizarre.






Avatar
Thierry DEMAN [MVP]
Bonsoir,

attention quand même ! la fonction de conversion n'est pas universelle...

Je suis déjà tombé sur des caractères accentués/spéciaux non gérés !

A+
--
Thierry DEMAN-BARCELÒ
MVP Exchange, SQL/Server
MCSE2003+M+S,MCSE+I,MCDBA
http://ofniorcim.dyndns.org
http://faqexchange.dyndns.org
"marc.dufresne" wrote in message
news:441a8e39$0$30080$
BONJOUR
je confirme c'est bien grace à la commande CHCP 1252 qui change la page
de code de la console
merci encore
j'ai vu aussi dans le message suivant que JCB avait un script pour palier
cet inconvénient, j'ai essayé et c'est OK
je crois que c'est une méthode qui fonctionne sur tous les systèmes.

merci à tous


"Fred" a écrit dans le message de news:
e%
Dans : news:44189432$0$7886$,
marc.dufresne disait :
bonsoir à toutes et tous
j'ai fait un fichier txt dans lequel il y a la liste de fichier
obtenu par un dir.



Bonsoir,

en complément de la réponse de Thierry DEMAN.
Dans l'invite de commande, fais un CHCP 1252 avant de faire le DIR.
Cela devrait coller ensuite.
(fonctionne sous 2000 et XP, pas testé avec d'autres)

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT






1 2