Convertir Hexa en character

Le
nabil kasmi
Bonjour,

je souhaite avoir une fonction javascript qui convertit les hexa en texte :

ex: Papeterie

en "Papeterie".

Cordialement,

Nabil.
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Pierre Goiffon
Le #730315
nabil kasmi wrote:
je souhaite avoir une fonction javascript qui convertit les hexa en texte :

ex: Papeterie

en "Papeterie".


Oulla ?!?? Quel est donc le besoin ??

nabil kasmi
Le #730060
Ben j'ai récupérer un fichier où certaine partie sont codé en hexadécimal.Je
voudrais faire la conversion pour récupérer le bon texte.
"Pierre Goiffon" news:460a70d0$0$7762$
nabil kasmi wrote:
je souhaite avoir une fonction javascript qui convertit les hexa en
texte :



ex: Papeterie

en "Papeterie".


Oulla ?!?? Quel est donc le besoin ??



Pierre Goiffon
Le #730058
nabil kasmi wrote:
je souhaite avoir une fonction javascript qui convertit les hexa en
texte :


ex: Papeterie

en "Papeterie".
Oulla ?!?? Quel est donc le besoin ??



Ben j'ai récupérer un fichier où certaine partie sont codé en hexadécimal.Je
voudrais faire la conversion pour récupérer le bon texte.


Vous pouvez réaliser la conversion en batch avec Tidy je pense...

Merci de prendre attention à quoter convenablement !
Voyez ce guide :
http://www.faqs.org/faqs/fr/usenet/repondre-sur-usenet/



nabil kasmi
Le #730057
Oui je pense aussi que ça peut marcher mais moi je voudrais le faire
moi-même via le javascript.
une methode ou une fonction javascript devrais exister.

"Pierre Goiffon" news:460a8152$0$27784$
nabil kasmi wrote:
je souhaite avoir une fonction javascript qui convertit les hexa en
texte :


ex: Papeterie

en "Papeterie".
Oulla ?!?? Quel est donc le besoin ??



Ben j'ai récupérer un fichier où certaine partie sont codé en
hexadécimal.Je


voudrais faire la conversion pour récupérer le bon texte.


Vous pouvez réaliser la conversion en batch avec Tidy je pense...

Merci de prendre attention à quoter convenablement !
Voyez ce guide :
http://www.faqs.org/faqs/fr/usenet/repondre-sur-usenet/





Elegie
Le #730056
nabil kasmi wrote:

Bonjour,

je souhaite avoir une fonction javascript qui convertit les hexa en texte :

ex: Papeterie

en "Papeterie".


Une "traduction" directe peut être obtenue en javascript à l'aide de la
fonction suivante:

---
function translate(str) {
function repeat(s, x) {
for(var ii=0; ii<x-1; ii++) { s+=s; }
return s;
}

return eval(
""" +
str.
replace(
/&#x(d{1,4});/g,
function(a, b) { return "\u"+repeat("0",4-b.length)+b ; }
).
replace(/"/g,"\"") +
"""
);
}
---

Note: les séquences d'escape HTML4 supportées sont celles d'ISO-8859-1;
les séquences d'escape unicode d'ECMAScript se réfèrent à Unicode; comme
(IIRC) ISO 8859-1 est un sous-ensemble parfait d'Unicode, la traduction
de texte HTML valide ne devrait donc pas poser de problème. En revanche,
la fonction traduira également des codes caractères non présents dans
ISO 8859-1, mais bien présents dans Unicode. A vous de voir si cela
constitue un problème pour votre application, en fonction des entrées
attendues et de votre stratégie de gestion d'erreurs.


HTH,
Elegie.

Olivier Miakinen
Le #730055

je souhaite avoir une fonction javascript qui convertit les hexa en texte :
ex: &#x50;&#x61;&#x70;&#x65;&#x74;&#x65;&#x72;&#x69;&#x65;
en "Papeterie".


[...]

replace(
/&#x(d{1,4});/g,


Attention, d ne convient pas ici puisqu'il s'agit de chiffres hexa,
donc pouvant inclure les lettres a à f (et A à F).

function(a, b) { return "\u"+repeat("0",4-b.length)+b ; }


Oui, ça me semble bien.

Note: les séquences d'escape HTML4 supportées sont celles d'ISO-8859-1;


Ben non, ce sont celles d'Unicode. Par exemple, &#x20AC; devrait donner
le caractère U+20AC, c'est-à-dire « ¤ ».

les séquences d'escape unicode d'ECMAScript se réfèrent à Unicode;


Oui. Pas de problème, donc.


Elegie
Le #730054
Olivier Miakinen wrote:

Hello,

/&#x(d{1,4});/g,


Attention, d ne convient pas ici puisqu'il s'agit de chiffres hexa,
donc pouvant inclure les lettres a à f (et A à F).


Oups. /&#x([0-9a-f]{1,4});/gi devrait être correct pour les entités
hexadécimales.

Note: les séquences d'escape HTML4 supportées sont celles d'ISO-8859-1;


Ben non, ce sont celles d'Unicode. Par exemple, &#x20AC; devrait donner
le caractère U+20AC, c'est-à-dire « ¤ ».


Re-oups. J'avais pourtant, par acquis de conscience, vérifié la
spécification avant de répondre, mais l'avais mal interprétée <grr> Une
lecture plus approfondie donne:

[1] ISO-8859-1 identifie un des sous-ensembles de
caractères utilisables dans une entité:

[2] la partie numérique d'une entité hexadécimale pointe effectivement
vers un caractère Unicode (ISO 10646):

Enfin, dernière petite erreur (j'espère!): l'implémentation de la
fonction 'repeat' n'est pas correcte au regard de l'usage qui en est fait.

Bref, le script, version corrigée, puis un petit bout de chocolat pour
oublier cette terrible journée <re-grr>

---
function translate(str) {
function repeat(s, x) {
var p="";
for(var ii=0; ii<x; ii++) { p+=s; }
return p;
}

return eval(
""" +
str.
replace(
/&#x([0-9a-f]{1,4});/gi,
function(a, b) { return "\u"+repeat("0",4-b.length)+b ; }
).
replace(/"/g,"\"") +
"""
);
}
---

Désolé encore pour ces erreurs, et merci pour les corrections !


Cheers,
Elegie 'today is a oups day'.


Elegie
Le #730053
Elegie wrote:

[1] ISO-8859-1 identifie un des sous-ensembles de
caractères utilisables dans une entité:


... ce qui, à la relecture, ne veut rien dire :(

Pour l'exprimer proprement; une "entité caractère", par opposition à
"entité numérique", est une entité définie à l'aide d'un nom et non d'un
code numérique (l'usage d'un nom permettant une meilleure mémorisation
par l'auteur).

Ex. &Ntilde; au lieu de &#209;

Les ensembles de caractères représentables par ces entités nommées,
sont: ISO 8859-1, des symboles, des symboles mathématiques, des lettres
grecques etc. La liste exhaustive est disponible ici:


Désolé pour la confusion.

Elegie 'today is a oups day'.


Olivier Miakinen
Le #730052

[...] /&#x([0-9a-f]{1,4});/gi devrait être correct pour les entités
hexadécimales.


En effet. Et l'option "i" permettra aussi bien un X majuscule (&#X)
que les lettres de A à F. Cela dit, je ne l'ai jamais vu, et surtout
l'exemple donné par Nabil n'utilisait que des x minuscules.

[...] J'avais pourtant, par acquis de conscience, vérifié la
spécification avant de répondre, mais l'avais mal interprétée <grr> Une
lecture plus approfondie donne:

[1] ISO-8859-1 identifie un des sous-ensembles de
caractères utilisables dans une entité:

[2] la partie numérique d'une entité hexadécimale pointe effectivement
vers un caractère Unicode (ISO 10646):


C'est la confusion bien compréhensible entre ce que j'appelle entités
« nommées » ou « symboliques » et entités « numériques ». La confusion
s'explique par le fait que tout le monde fait comme moi et les appelle
« entités », alors que pour le W3C les deux sont des « références de
caractères » mais que seule la première est en fait appelée « entité ».

[...]

Bref, le script, version corrigée, puis un petit bout de chocolat pour
oublier cette terrible journée <re-grr>


:-D

Désolé encore pour ces erreurs, et merci pour les corrections !


Merci surtout à toi qui as fait tout le boulot !

Olivier Miakinen
Le #730051

Elegie wrote:

[1] ISO-8859-1 identifie un des sous-ensembles de
caractères utilisables dans une entité:


... ce qui, à la relecture, ne veut rien dire :(


;-)

Ce qu'ils voulaient dire, c'est qu'il existe des entités de caractères
pour toute la partie haute de ISO-8859-1 sans exception. Il y en a aussi
pour tous les caractères trouvables dans la police "Symbol" (quelques
symboles mathématiques et lettres grecques en particulier) et il y a
enfin quatre entités pour des caractères ASCII servant au balisage :
« " », « & », « < » et « > ».

Pour l'exprimer proprement; une "entité caractère", par opposition à
"entité numérique", est une entité définie à l'aide d'un nom et non d'un
code numérique (l'usage d'un nom permettant une meilleure mémorisation
par l'auteur).

Ex. &Ntilde; au lieu de &#209;


Et pour l'exprimer encore plus proprement on parlera de « référence
d'entité de caractère » (&Ntilde;) par opposition à « référence de
caractère numérique » (&#209;). Mais c'est beaucoup plus long à écrire.

Les ensembles de caractères représentables par ces entités nommées,
sont: ISO 8859-1, des symboles, des symboles mathématiques, des lettres
grecques etc.


Ah, pardon, j'ai commencé à rédiger ma réponse avant de lire jusqu'au
bout. Tant pis, ça fera redite mais je le laisse.


Publicité
Poster une réponse
Anonyme