Convertir fichier texte UNICODE en ASCII ??
Le
teddy

Bonjour à tous,
J'ai un fichier de redirection d'une commande console (CMD /C WMIC PRODUCT
GET /FORMAT:csv > Temp.csv) et dont les caractères semblent codés sur 2
octets.
Je mets chaque ligne dudit fichier dans une chaîne "source" et j'essaye de
convertir en ASCII avec la fonction StrConv mais cela ne change rien.
destination = StrConv(source, 128)
Auriez-vous une idée sur les conversions UNICODE->ASCII ?
Une moulinette qui manipule des tableaux d'octets peut-être ?
Merci d'avance pour vos lumières, je ne sais pas comment faire :-|
Ted
J'ai un fichier de redirection d'une commande console (CMD /C WMIC PRODUCT
GET /FORMAT:csv > Temp.csv) et dont les caractères semblent codés sur 2
octets.
Je mets chaque ligne dudit fichier dans une chaîne "source" et j'essaye de
convertir en ASCII avec la fonction StrConv mais cela ne change rien.
destination = StrConv(source, 128)
Auriez-vous une idée sur les conversions UNICODE->ASCII ?
Une moulinette qui manipule des tableaux d'octets peut-être ?
Merci d'avance pour vos lumières, je ne sais pas comment faire :-|
Ted
D'après ce que tu dis, tu as un codage ascii déjà sur 2 octets par signe
espace, c'est le lot de tous le fichiers textes, et ce qui en découle
généralement, que voudrais-tu comme codage, sur combien d'octets, pourquoi
???
--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
" teddy"
teddy a écrit :
Quelle méthode utilise tu pour lire le fichier ?
Avec :
Line Input #fNum, source
le fichier semble correctement interprété par VB. Il faut simplement
ignorer les 2 premiers octets : FF FE qui indiquent un codage UTF-16
en little-endian.
Plus de détails ici sur les Byte Order Mark :
http://fr.wikipedia.org/wiki/Marque_d'ordre_des_octets
--
Cordialement,
Jacques.
"LE TROLL"
"Jacques93" a écrit dans le message de news:
OR81LcA%
--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
" teddy" %23kM$oBI%
structure ressemble ???
--
Merci beaucoup, au revoir et à bientôt :o)
------
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
" teddy" %23kM$oBI%
que j'ai indiquée dans mon 1er post :
WMIC PRODUCT GET /FORMAT:csv > Temp.csv
Dans le fichier obtenu, les caractères sont bien de l'ASCII mais codés
apparemment sur 2 octets dont l'un est 00 si bien que chaque caractère est
séparé du suivant par un espace à l'affichage.
Si quelqu'un voit comment traiter le fichier ou paramétrer la commande
console, je suis preneur ...
Ted
Hello,
c'est en fait très simple. Ton fichier est simplement codé en Unicode, c'est
à dire qu'il a la structure suivante:
Les 2 premiers octets (ici FF FE) sont la marque de l'unicode et t'indique
si le fichier est codé en big-endian ou en litle endian.
Ici, "FF FE" indique un codegae little-endian, ce qui signifie que dans la
suite du fichier, chaque caractère sera codé sur 2 octets, le premier octet
de chaque paire étant le code caractère et le second la page de code.
Tu verras que dans ton cas, le 2nd octet vaut toujours 0, ce qui est la
marque de la page de code correspondant à l'ASCII.
Comment traiter ce fichier?
Il ya une fonction VB qui permet de traiter ceci: StrConv()
Comment faire?
1. Lire le fichier entier en binaire
2. Convertir le buffer
Voici:
Dim f As Integer
Dim l As Long
Dim bufUnicode As String
Dim bufAscii As String
f = FreeFile
Open "c:temp.csv" For Binary As #f
l = LOF(f)
bufUnicode = Space$(l)
Get #f, , bufUnicode
Close #f
bufAscii = StrConv(bufUnicode, vbFromUnicode)
Et voila, pas plus compliqué que cela :-)
--
Jean-marc Noury (jean_marc_n2)
MVP Visual Basic
mailto: remove '_no_spam_' ;
FAQ VB: http://faq.vb.free.fr/
:o)
mdr
--
Loïc Carrère
http://www.asi-concept.fr