Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1633 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Lecture fichier texte UTF-8

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Lecture fichier texte UTF-8

n°1421393
el0807
Posté le 07-08-2006 à 12:27:15  profilanswer
 

En résumé, voici mon problème :  
 
Avec VBA Access, je dois lire (puis traiter) une série de fichiers texte au format UNICODE UTF-8.  Et VBA Access semble les lire comme des formats UTF-7, ce qui rend le texte difficilement lisible (tous les signes accentués sont transformés).
 
Après la méthode classique de l'Open, j'ai essayé avec OpenAsTextStream, mais ça ne change rien, quelque soit la valeur du Tristate (-2,-1 ou 0). Je ne sais pas comment spécifier que le fichier est en UTF-8.
 
Plus précisément :
 
J'ai par exemple une fichier TEMP1.txt qui contient cette ligne de texte :
 

Citation :

Au-delà des génétiquement modifiés


 
J'ai commencé à lire ce texte avec cette méthode :
 

Code :
  1. Open "C\...\TEMP1.txt" For Input As #1
  2. Line Input #1, TextArticle
  3. Debug.Print TextArticle
  4. Close #1


 
Voila ce que ça donne :
 

Citation :

Au-delÃ* des génétiquement modifiés


 
J'ai donc essayé avec cette méthode :
 

Code :
  1. Set objFSO = New Scripting.FileSystemObject
  2. Set objFile = objFSO.GetFile("C:\...\TEMP1.txt" )
  3. Set objtextstream = objFile.OpenAsTextStream(ForReading, TristateTrue)
  4. Debug.Print objtextstream.ReadLine


 
Mais ça ne change rien!
 
Je sais aussi qu'il y a bien une méthode avec ADODB qui marche :
 

Code :
  1. Set strm = CreateObject("adodb.stream" )
  2. With strm
  3. .Charset = "utf-8"
  4. .Type = 2
  5. .Open
  6. .LoadFromFile "C:\...\TEMP1.txt"
  7. t = .ReadText
  8. Debug.Print t
  9. .Close
  10. End With


 
Mais le problème est que je dois lire le fichier ligne par ligne, ce qui est impossible avec cette méthode.
 
J'ai également cru comprendre sur Internet qu'il existe une manière de spécifier le format avec cette instruction :
 

Code :
  1. objFile.Charset = "UTF-8"


 
Mais VB Access me répond que cette méthode n'est pas gérées par cet objet (erreur 438).
 
Une dernière chose : vu le nombre et la taille des fichier, leur simple conversion (avec Word par exemple) n'est pas envisageable.
 
Je suis donc bien embêté, et vous serai très reconnaissant de me tirer de ce mauvais pas!
 
Bien cordialement,
 
EL

mood
Publicité
Posté le 07-08-2006 à 12:27:15  profilanswer
 

n°1421396
kika93
Les pingouins j'aime bien.
Posté le 07-08-2006 à 12:29:34  profilanswer
 

Tu as essayé avec TransfertText?

n°1421397
kika93
Les pingouins j'aime bien.
Posté le 07-08-2006 à 12:30:00  profilanswer
 

oups TransferText pour être exact

n°1421407
el0807
Posté le 07-08-2006 à 12:38:42  profilanswer
 

Non, en effet, je vais voir ce que ça donne.

n°1421411
el0807
Posté le 07-08-2006 à 12:42:31  profilanswer
 

A vrai dire, je crois que je pourrais convertir les fichiers UTF-8 en fichiers plus lisible en les important dans une table sous ce format (je suis sur VBA Access), puis en les exportant sous un autre. Mais je trouve que cette solution est un peu lourdingue. N'y a-t-il donc pas un moyen de faire connaître à VBA le format précis du fichier au moment de sa lecture ligne par ligne?

n°1421418
kika93
Les pingouins j'aime bien.
Posté le 07-08-2006 à 12:48:32  profilanswer
 

TransferText importe ligne par ligne dans une table, ce n'est pas ce que tu veux? tu veux traiter les lignes à la volée sans les stocker?

n°1421427
el0807
Posté le 07-08-2006 à 13:01:51  profilanswer
 

Eh Oui!
En plus, je me méfie un peu des méthodes d'importation de VBA Access, pour avoir eu quelques mauvaises surprises. Sur des fichiers relativement léger tout se passe bien, mais dès que le fichier est plus lourd (quelques dizaines de milliers de lignes), alors on découvre, mais toujours un peu tard, que des blocs de lignes ont été intervertis! Or dans le cas présent l'ordre est important. Et je dois de toute façon traiter les lignes à la volée.
 
Si tu as une idée...
 
PS : je dois décoller du bureau maintenant, je ne répondrai donc pas dans les heures qui suivent. Mais je lirai avec attention tous vos conseils ce soir! Merci d'avance!

n°1421515
kika93
Les pingouins j'aime bien.
Posté le 07-08-2006 à 14:48:45  profilanswer
 

Désolé, j'ai cherché, j'ai pas d'autres idées...

n°1421629
wice
Posté le 07-08-2006 à 16:23:14  profilanswer
 

je suis aussi de ton avis kika93, je me sers de cette méthode pour travailler avec des données sources au format .txt et cela fonctionne très bien.


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Lecture fichier texte UTF-8

 

Sujets relatifs
Problème sur un flux de lecture à partir d'un fichier .txtTransmettre texte par URL
[Résolu] [C#.Net] Ecrire du texte dynamiquement dans une page .aspxBatch - Obtenir le poids d'un fichier avec la commande ForFile.exe
[PHP] Upload de fichier presque fonctionnel (presk...)Batch - Afficher les fichier du répertoire System Volume Information
Champs de texte dans un formulaire et présentationInserer une valeur d'une base de donnée dans un champ de texte
Effacer la mise en forme d'un fichier 
Plus de sujets relatifs à : Lecture fichier texte UTF-8


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR