Encodage texte sur lecture d'un fichier avec FSO

Messages postés
662
Date d'inscription
mercredi 16 janvier 2002
Statut
Modérateur
Dernière intervention
16 octobre 2010
- - Dernière réponse : PetoleTeam
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
- 17 sept. 2010 à 18:04
Bonjour, j'ai un soucis de caractère dans un petit Gadget windows...
Voila je lis le contenu d'un fichier avec : FSO.OpenTextFile(Fichier, 1);

Si dans ce fichier j'ai le caractère => À
Lorsque je lis le fichier j'obtient => À
donc j'ai text="À"

J'ai essayé decodeURIComponent(escape(Text)); ça ne marche pas...!

Et lorsque j'affiche le code du caractère avec charCodeAt j'ai :
à : text.charCodeAt(0)=195
€ : text.charCodeAt(0)=8364 !!!!! ???

Voila une idée ????
Merci d'avance
Afficher la suite 

8 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
Bonjour,
je ne connais pas bien ces méthodes mais la documentation de MSDN devrait t'apporter la réponse, OpenTextFile Method, et notamment le paramètre de format, en UNICODE peut être?

;O)
Commenter la réponse de PetoleTeam
Messages postés
662
Date d'inscription
mercredi 16 janvier 2002
Statut
Modérateur
Dernière intervention
16 octobre 2010
0
Merci
Bien justement, mon premier réflexe a été d'aller voir mais j'ai rien trouvé...
Commenter la réponse de fredlynx
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
Bonjour,
dans ce cas il s'agit d'un problème à la sauvegarde du fichier TXT et de l'encodage au moment de celle ci.
A parier que tu à un encodage UTF-8 avec une notion de BOM.
Enregistre ton fichier en ANSI basique.

;O)
Commenter la réponse de PetoleTeam
Messages postés
662
Date d'inscription
mercredi 16 janvier 2002
Statut
Modérateur
Dernière intervention
16 octobre 2010
0
Merci
Le problème c'est que le fichier c'est pas moi qui l'enregistre

C'est le fichier de bookmarks de firefox... Donc je ne peut pas le modifier, je cherche juste à le lire ...
Commenter la réponse de fredlynx
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
sauf à connaître l'algorithme et faire cela à la mano, je ne vois pas de solution JavaScript...mais qui sait ?

;O)
Commenter la réponse de PetoleTeam
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
Bonjour,
la solution à ton problème est ici
UTF-8 data encode / decode, merci à Ken Thompson.

;O)
Commenter la réponse de PetoleTeam
Messages postés
662
Date d'inscription
mercredi 16 janvier 2002
Statut
Modérateur
Dernière intervention
16 octobre 2010
0
Merci
Nop désolé cette fonction ne marche pas ! J'ai un truc super tordu que j'ai maintenant compris mais je ne comprend pas pourquoi c'est comme ça...

En fait il y a un mélange UTF-8 - UNICODE en clair

Dans le fichier il y a : "À"
Si je passe ça dans le décodage utf-8 :
à : text.charCodeAt(0)=195
€ : text.charCodeAt(1)=8364

Le 8364 n'est pas pris en compte par la fonction de décode utf-8...

En fait c'est du utf-8 dans le fichier mais le fonction charCodeAt me renvoie la valeur décimale du code du carractère en UNICODE, pourquoi ????
à : text.charCodeAt(0)=195 => \u00C3
€ : text.charCodeAt(1)=8364=> \u20AC

Donc mes données dans le fichier sont en unicode....
Commenter la réponse de fredlynx
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
10
0
Merci
Le 8364 n'est pas pris en compte par la fonction de décode utf-8...
si il est pris en charge dans la condition suivante
else if((c > 191) && (c < 224)) {
par contre le résultat est étrange
ì [ 236 ] [ EC ]
ce qui ne correspond pas à l'attendu ????

je te mets un lien, que tu connais peut être
UTF-8 : principe et mise en oeuvre...

;O)
Commenter la réponse de PetoleTeam