Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Convertir fichier texte UNICODE en ASCII ??

9 réponses
Avatar
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

9 réponses

Avatar
LE TROLL
Bonjour,

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" a écrit dans le message de news:

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



Avatar
Jacques93
Bonjour teddy,
teddy a écrit :
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




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.
Avatar
teddy
L'ASCII "de base", c'est un octet par caractère.


"LE TROLL" <le a écrit dans le message de news:

Bonjour,

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" a écrit dans le message de news:

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







Avatar
teddy
ok, merci.

"Jacques93" a écrit dans le message de news:
OR81LcA%
Bonjour teddy,
teddy a écrit :
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



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.


Avatar
LE TROLL
Oui, pardon, je voulais dire 2 bits... suis, distrait :o)

--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
" teddy" a écrit dans le message de news:
%23kM$oBI%
L'ASCII "de base", c'est un octet par caractère.


"LE TROLL" <le a écrit dans le message de news:

Bonjour,

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" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
" teddy" a écrit dans le message de news:

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











Avatar
LE TROLL
Peux-tu envoyer ou mettre en ligne ici ton fichier, pour voir à quoi sa
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" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
" teddy" a écrit dans le message de news:
%23kM$oBI%
L'ASCII "de base", c'est un octet par caractère.


"LE TROLL" <le a écrit dans le message de news:

Bonjour,

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" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
" teddy" a écrit dans le message de news:

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











Avatar
teddy
On peux obtenir le début du fichier en lançant dans la console la commande
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
Avatar
jm
" teddy" wrote in message
news:OZYYegU%
On peux obtenir le début du fichier en lançant dans la console la commande
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 ...



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/
Avatar
Loïc Carrère
Oui, pardon, je voulais dire 2 bits... l-) l-) l-) l-) suis, distrait
:o)
mdr


--
Site éditeur MES ROMANS édités
http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
" teddy" a écrit dans le message de news:
%23kM$oBI%
L'ASCII "de base", c'est un octet par caractère.


"LE TROLL" <le a écrit dans le message de news:

Bonjour,

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" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://www.manuscritdepot.com/a.joseph-attila-pusztay.1.htm
Site de MES LOGICIELS
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr
mon adresse EMail
http://irolog.free.fr" target="_blank" class="text-blue hover:opacity-90 " style="word-break: break-all;" rel="noopener nofollow">http://irolog.free.fr/ecrire/index.htm
------------------------------------------------------------------------------------
" teddy" a écrit dans le message de news:

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














--

Loïc Carrère

http://www.asi-concept.fr