Problème URL avec decodeURIComponent()

Pour toutes les discussions javascript, jQuery et autres frameworks
Répondre
Jpe54
Messages : 15
Enregistré le : 10 mars 2017, 14:11

Problème URL avec decodeURIComponent()

Message par Jpe54 » 23 janv. 2019, 12:21

Bonjour,

Je me heurte à un problème avec des liens contenant des espaces et des caractères accentués pourtant avec un code HTML ou JS encodé en UTF-8 sans Bom…

Ayant actualisé mes codes source à la norme W3C j'ai actualisé tous les fichiers HTML, JS, XML en UTF-8 au lieu de ANSI avec Notepad++, sans aucune modification des codes source, hors entêtes :

Code : Tout sélectionner

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
En

Code : Tout sélectionner

<!DOCTYPE html>
<html lang="fr">
<head>

<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
Tout fonctionne sans problème. Rien à signaler…

Je récupère les liens sans problème d'encodage en me débarrassant des %20 avec la fonction unescape() - qui continue de fonctionner - pour afficher les titres dans une page HTML.

Par exemple des liens vers "2019-01 Le Haut du Tôt" ou "2019-01 Hélène" en laissant faire les navigateurs…

=-=-=-=-=-=-=-=

Voulant remplacer cette fonction unescape() dépréciée par decodeURIComponent() je rencontre le message :
SCRIPT5025: SCRIPT5025: The URI to be decoded is not a valid encoding

Je constate que l'url désormais transmise - via lien href - est sous la forme : Le%20Haut%20du%20T%F4t.htm malgré fichier encodé en UTF-8 sans Bom… alors que si je nomme le code ci-dessous en "2019-01 le Haut du Tôt.htm" et le lance directement la récupération de son nom est correct !

Code : Tout sélectionner

<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Test decodeURIComponent</title>
</head>

<body>
<script type="text/javascript">

//  var chaine="Le Haut du Tôt";

// var chaine = document.location.href;

var chaine = "Le%20Haut%20du%20T%F4t";

chaine = decodeURIComponent(chaine);
// alert(chaine)

document.write( chaine );

</script>

</body>
</html>
Visiblement j'ai raté quelque chose !

Merci de vos remarques.

Bien amicalement à vous tous.


EDIT 13h20 :
Je continue mes recherches car visiblement la cause est ailleurs...

Jpe54
Messages : 15
Enregistré le : 10 mars 2017, 14:11

Re: Problème URL avec decodeURIComponent()

Message par Jpe54 » 23 janv. 2019, 13:38

Cause localisée :
Pour information une fonction :o escape() :o trainait dans le codage des liens comme ceci et qui générait cette anomalie !
// Encodage des espaces du lien Url avec variable str
URL = "index_Vignettes.htm?RepDIA=" + escape(str) + "&PageD=1";
comme ceci cela fonctionne correctement !
// Encodage des espaces du lien Url avec variable str
URL = "index_Vignettes.htm?RepDIA=" + str + "&PageD=1";
C-Q-F-D !

Sujet clos donc...

Avatar du membre
Frosty
Messages : 119
Enregistré le : 20 juil. 2017, 13:23
Localisation : Grenoble

Re: Problème URL avec decodeURIComponent()

Message par Frosty » 28 janv. 2019, 13:22

Merci pour le suivi et le partage de la solution ! :)

Répondre