Décoder majuscules de UTF-8 vers ASCII

jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 - 26 mars 2011 à 01:27
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 - 2 avril 2011 à 00:00
Bonjour,

J'eus beau cherché, cherché encore, testés toutes les solutions données sur Google, rien ne marche !

Je tente de trouver une fonction qui décoderait UTF8 vers ASCII. C'est simple juste qu'ici, j'en ai trouvé plusieurs. Seulement, tout ceux là sont INCAPABLES de décoder des accents majuscules (ex : É À Ê Ë Ç...) vers ASCII...

Quelqu'un pourrait-il m'aider ?

JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
A voir également:

15 réponses

cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
26 mars 2011 à 09:40
Salut,

Ces caractères ne font pas parti de l'ASCII "normal" (7bits)
je te laisse voir ce qu'en dit wiki (Extended ASCII) pour que tu comprennes mieux. Petit extrait :
The term extended ASCII (or high ASCII) describes eight-bit or larger character encodings that include the standard seven-bit ASCII characters as well as others. The use of the term is sometimes criticized, because it can be mistakenly interpreted that the ASCII standard has been updated to include more than 128 characters or that the term unambiguously identifies a single encoding, both of which are untrue.
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
26 mars 2011 à 15:15
Hmm...

Dans ce cas là, j'ai un gros problème...

Laisse moi t'expliquer :

Je tente de faire une requête AJAX en local, seulement, puisque ce n'est pas possible avec IE, j'ai utilisé l'ActiveX Scripting.FileSystemObject, pour accéder aux fichiers. Le problème, c'est que, peut importe l'encodage, on va me retourner quelque chose comme  Heum... Je vois déjà les reproches en vue !. Et je répète, peut importe l'encodage de ma page.

Que me conseilles-tu ?


JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
28 mars 2011 à 11:59
Re,

pour résumer le contexte : tu lis un fichier sur le poste client (d'où l'utilité d'un ActiveX), et quand tu récupères son contenu tu te trouves avec des erreurs d'encodage. J'ai bon ?
Pourrais-tu faire suivre ton code qui lis/utilise le fichier local stp ?
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
28 mars 2011 à 19:25
Faire de l'Ajax en local, c'est possible avec IE. Il convient seulement de transformer son poste en serveur avec Wamp ou EasyPHP!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
28 mars 2011 à 22:06
@Jopop :

Je l'ai transformé un peu pour que tu puisses l'utiliser directement :
if(document.all){
activex = new ActiveXObject("Scripting.FileSystemObject");
}
function load(url){
if(window.activex){
s="";

url=url.replace(/^file:[\/]+/i,'');
try{
url=decodeURI(url);
}
catch(e){
url=decodeURIComponent(url);
}

      if (activex.FileExists(url)) {
         ts = activex.OpenTextFile(url,1,false,-2)
         s = ts.ReadAll() // ou Read(nbchars) ou ReadAll
         ts.Close()
      }

alert(s);

}
}


@007Julien : L'objectif est justement de ne pas utiliser ces technologies. Et ActiveX me permet de faire des requêtes locales... mais avec un petit problème d'encodage

JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
007Julien Messages postés 276 Date d'inscription mercredi 22 septembre 2010 Statut Membre Dernière intervention 8 janvier 2014 4
29 mars 2011 à 00:18
Merci pour cet éclaircissement, tu cherche donc non pas « à faire une requête Ajax en local », mais seulement accéder aux fichiers ce qui n'est possible qu'avec IE, mais contraire à la déontologie consistant à ne pas intervenir sur les fichiers du poste client.
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
29 mars 2011 à 00:23
En fait c'est la seul manière d'utiliser Javascript seulement pour accéder aux contenus des fichiers, sans passer par tes technologies qui méritent d'être installer sur leurs ordinateurs.


JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
29 mars 2011 à 11:52
Re,

Alors pour faire simple l'objet Scripting.FileSystemObject ne prend simplement pas en charge l'UTF-8 (je viens de vérifier par code/recherche google).

J'ai cherché d'autres objets qui feraient ça bien, mais rien de concluant. J'ai donc basculé sur l'idée de faire le decode, et je suis tombé sur cette page : Encode/Decode UTF8
Il suffit d'utiliser la fonction decode() sur le contenu de ton fichier (testé).

Bon code
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
30 mars 2011 à 00:55
Ce qui me ramène au problème, ces fonctions ne décodent pas les majuscules accentuées.


JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
30 mars 2011 à 09:22
Re,

Chez moi cette fonction décode correctement tous les caractères. L'as-tu essayée ?
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
31 mars 2011 à 02:46
Oui, je l'ai essayé et elle me retourne
 CE FICHIER EST DðSUET ET NE REPRðSENTE PAS LES F...


au lieu de
 CE FICHIER EST DÉSUET ET NE REPRÉSENTE PAS LES F



...

JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
31 mars 2011 à 12:13
Re,

ouai désolé, dans mon test perso j'ai pas bien regardé (j'ai vu un Á bien écrit j'ai pas cherché plus loin).
Sinon, que compte tu faire de cette string ?
Si c'est pour un alert() alors il va falloir trouver une astuce (référencer les majuscules accentuées et les remplacer par des non-accentuées).
Si c'est pour un autre traitement, tant pis pour l'affichage frelaté dans un alert(), faut se concentrer sur le bon fonctionnement de la suite de ton process.
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
1 avril 2011 à 00:57
En fait, la chaîne est tout simplement imprimé sur la page, après avoir subi quelques petits traitements qui fonctionnent tous.


JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
cs_jopop Messages postés 1540 Date d'inscription lundi 26 mai 2003 Statut Membre Dernière intervention 1 août 2013 12
1 avril 2011 à 19:53
Genre avec un document.write() ou un document.getElementById().innerHTML/Text() (javascript) ?
Si oui, en déclarant ta page HTML comme UTF8, tu as quand même tes erreurs d'accent ?

PS : j'ai pas de quoi tester en ce moment, désolé
0
jdmcreator Messages postés 647 Date d'inscription samedi 30 décembre 2000 Statut Membre Dernière intervention 20 juillet 2012 7
2 avril 2011 à 00:00
Avec innerHTML et bel et bien une déclaration d'encodage d'UTF8. Et même en la changeant, cela ne fait rien... :(


JDMCreator
--------
Participez au nouveau projet : la wiki sur le javascript !
fr.jsinfo.wikia.com
0
Rejoignez-nous