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">
Code : Tout sélectionner
<!DOCTYPE html>
<html lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
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>
Merci de vos remarques.
Bien amicalement à vous tous.
EDIT 13h20 :
Je continue mes recherches car visiblement la cause est ailleurs...