Page 1 sur 1

Problème URL avec decodeURIComponent()

Posté : 23 janv. 2019, 12:21
par Jpe54
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...

Re: Problème URL avec decodeURIComponent()

Posté : 23 janv. 2019, 13:38
par Jpe54
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...

Re: Problème URL avec decodeURIComponent()

Posté : 28 janv. 2019, 13:22
par Frosty
Merci pour le suivi et le partage de la solution ! :)