Vbscript - Convertir un fichier TXT du format Unicode vers ANSI

Vbscript - Convertir un fichier TXT du format Unicode vers ANSI - VB/VBA/VBS - Programmation

Marsh Posté le 19-10-2005 à 20:04:07    

Bonjour a tous,
 
Dans mes recherches précédentes, j'ai essayé de modifier de façon récursives des valeurs éparpillées dans la base de registre.
J'ai opté pour une solution assez simple pour le moment:
1> Export du registre en Reg.
2> Renommer le Reg en Txt.
3> Modifier le fichier TXT de façon automatique
4> Renommer le txt en Reg
5> Importer la modification
 
Le résultat est tres convenable mais les uns séparés des autres.
En effet, l'export du registre créé un fichier en mode unicode qui n'est pas lisible par mon script de modification du TXT.
Il faut donc le modifier en ANSI car la cela fonctionne.
J'ai essayé avec Wordpad et c'est convainquant.
Avez vous une solution pour modifier de façon automatique le type de ce fichier (VBS).
 
Merci.
Vincent.
 
PS: Bien sur je laisserai a dispo le script complet si cela intéresse des personnes.
(BUT: changer les config des postes de travail lors de changements dans le réseau)
 
A+
VL

Reply

Marsh Posté le 19-10-2005 à 20:04:07   

Reply

Marsh Posté le 19-10-2005 à 21:15:33    

Voici un petit script pour convertir un fichier unicode, nommé "hello_u.txt" dans mon exemple, en un fichier Ascii, nommé "hello_a.txt". Il marche sous Windows Millennium, et je pense que qu'il marche aussi avec les versions ultérieures de Windows :

Code :
  1. ' Convert Unicode to Ascii
  2. Const ForReading = 1, ForWriting = 2, ForAppending = 8
  3. Const ModeAscii = 0, ModeUnicode = -1
  4. Dim fso, f_in, f_out
  5. Set fso = CreateObject("Scripting.FileSystemObject" )
  6. Set f_in = fso.OpenTextFile("Hello_u.txt", ForReading,, ModeUnicode)
  7. Set f_out = fso.OpenTextFile("Hello_a.txt", ForWriting, true, ModeAscii)
  8. Do Until f_in.AtEndOfStream
  9.    f_out.Write f_in.Read(1)
  10. Loop
  11. f_in.Close
  12. f_out.Close

:)

Reply

Marsh Posté le 20-10-2005 à 11:43:16    

WAAAAAAAAAAAAAAOOOOOOOOOOOOOOOUUUUUUUUUUU
 
Ca marche tres tres bien.
 
Merci pour tout.
Vincent.

Reply

Marsh Posté le 18-12-2007 à 11:36:40    

J'y connais pas grand chose mais ASCII et ANSI c'est pas la même chose.
 
Il l'existe l'équivalent:
UNICOD => ANSI
ou  
ASCII => ANSI

Reply

Marsh Posté le 18-12-2007 à 13:11:27    

Si on veut chipoter, alors chipotons :
 
Unicode s'écrit avec un "e" à la fin, et sans majuscules, sauf pour la première lettre.
Il n'y a pas de "l" apostrophe dans "il existe".
 
La page suivante montre les tables ASCII et ANSI : http://mathbits.com/MathBits/CompSci/Screen/ANSI.htm
Elles sont identiques pour les 26 lettres de l'alphabet, les 10 chiffres, et les signes de ponctuation. Elles sont quasiment identiques pour les autres caractères.

Reply

Marsh Posté le 19-12-2007 à 16:00:31    

Bon lol, merci pour tes remarques.
Si j'ai fait cette remarque c'est que je n'étais pas au courant que le codage ANSI était en fait une extension du codage ASCII, donc identique pour les premiers caractères.
 
Aujourd'hui je suis embêté car je souhaiterais pouvoir écrire dans un fichier texte au format ANSI. Mon fichier comporte des caractères accentués et cela me pose problème par la suite.
 
Exemple:  Si je cherche à écrire Elémentaire, j'obtiens le mot suivant: Elꮥntaire
 
Aujourd'hui j'utilise les fonction suivante pour créer et ouvrir un fichier:
 
CreateTexteFile
OpenTextFile
OpenAsTextStream
 
Il n'est me semble t'il pas possible de spécifier un encodage ANSI pour ces fonctions.


Message édité par pulsar07 le 19-12-2007 à 16:01:13
Reply

Marsh Posté le 11-10-2008 à 18:18:24    

Bonjour !
 
Est-il possible de modifier le code de sorte qu'il :
 
- Recherche tous les fichiers texte dont l'extension est .m3u
- Créé un autre fichier .spl contenant le texte du .m3u converti en UCS-2 Litlle Endian
 

Code :
  1. En fait j'ai déjà un peu modifier :
  2. ' Convert Unicode to Ascii
  3. Const ForReading = 1, ForWriting = 2, ForAppending = 8
  4. Const ModeAscii = 0, ModeUnicode = -1
  5. Dim fso, f_in, f_out
  6. Set fso = CreateObject("Scripting.FileSystemObject" )
  7. Set f_in = fso.OpenTextFile("test.m3u", ForReading,, ModeAscii)
  8. Set f_out = fso.OpenTextFile("test.spl", ForWriting, true, ModeUnicode)
  9. Do Until f_in.AtEndOfStream
  10. f_out.Write f_in.Read(1)
  11. Loop
  12. f_in.Close
  13. f_out.Close


 
Donc là il converti bien de ANSI vers UCS-2 Little Endian, mais il faudrait mettre des variable pour qu'il traite tous les .m3u du dossier, et ça je sais pas faire ! Je n'y connais rien en vbs  :D  
 
Merci !

Message cité 1 fois
Message édité par Ultradoux le 11-10-2008 à 19:38:09
Reply

Marsh Posté le 01-03-2010 à 10:02:55    


Bonjour !
 
Je cherche à faire la même chose, c-à-d convertir des fichiers "report.txt" se trouvant dans un ensemble de dossiers.
 
As-tu trouver la solution ?
 
Merci
 
 
 
 

Ultradoux a écrit :

Bonjour !
 
Est-il possible de modifier le code de sorte qu'il :
 
- Recherche tous les fichiers texte dont l'extension est .m3u
- Créé un autre fichier .spl contenant le texte du .m3u converti en UCS-2 Litlle Endian
 

Code :
  1. En fait j'ai déjà un peu modifier :
  2. ' Convert Unicode to Ascii
  3. Const ForReading = 1, ForWriting = 2, ForAppending = 8
  4. Const ModeAscii = 0, ModeUnicode = -1
  5. Dim fso, f_in, f_out
  6. Set fso = CreateObject("Scripting.FileSystemObject" )
  7. Set f_in = fso.OpenTextFile("test.m3u", ForReading,, ModeAscii)
  8. Set f_out = fso.OpenTextFile("test.spl", ForWriting, true, ModeUnicode)
  9. Do Until f_in.AtEndOfStream
  10. f_out.Write f_in.Read(1)
  11. Loop
  12. f_in.Close
  13. f_out.Close


 
Donc là il converti bien de ANSI vers UCS-2 Little Endian, mais il faudrait mettre des variable pour qu'il traite tous les .m3u du dossier, et ça je sais pas faire ! Je n'y connais rien en vbs  :D  
 
Merci !


Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed