Bonjour,
Je fais depuis le début au cas où...
Il s'agit d'une très petite page html qui affiche et gère le lecteur audio de base.
J'ai un programme perl qui me génère une commande qui contient en gros une URL.
Ce programme perl appelle un fichier.bat qui lance FF avec l'URL
Jusque là pas de PB.
En JavaScript je récupère l'URL, dans laquelle j'ai le nom du fichier .mp3 à lire.
Manque de pot j'ai des centaines de fichiers qui comportent des caractères spéciaux :
Je traite la chaîne reçue avec :
Comme vous pouvez le voir sur l'image jointe, les 'é' et 'Ï' ne sont pas convertis.
Je sèche sur ce pb rudimentaire depuis ce matin, j'ai essayé sans succès le replace avec des tas de codifications :
C'est quoi le truc que je ne vois pas encore en JavaScript ?
[Édit] Je précise que tous les programmes (.pl ; .bat ; html & .js) sont codés utf8. D'ailleurs au démarrage je force un titre qui contient des caractères spéciaux, qui passe bien dans le html.
Visiblement c'est le URLSearchParams (param) qui convertit tout seul les %20 en espaces.
Pour info je lis très bien des .mp3 dont les noms ne comportent pas de caractères spéciaux. Quand même
[Édit:13/08 à 06:30]
Je ne sais pas comment est codée la chaîne renvoyée par urlParams.get ('name'); mais aucune transformation ne fonctionne ! J'ai essayé :
Ou c'est ma syntaxe Url.replace , qui foire, pourtant c'est ce que je trouve sur Internet...
Merci pour vos suggestions !
https://zupimages.net/viewer.php?id=21/32/k0cy.jpg
Modifié par dmganges (13 Aug 2021 - 06:28)
Je fais depuis le début au cas où...
Il s'agit d'une très petite page html qui affiche et gère le lecteur audio de base.
J'ai un programme perl qui me génère une commande qui contient en gros une URL.
Ce programme perl appelle un fichier.bat qui lance FF avec l'URL
Le perl :
my @Cde = ($Bat , $Param1, $Param2 , $Param3 , $Param4, $Param5, $Param6);
system @Cde;
Le .bat :
"C:\Program Files\Mozilla Firefox\firefox.exe" -P 64Bits -no remote %1=%2^&%3=///%4^&%5=%6
Jusque là pas de PB.
En JavaScript je récupère l'URL, dans laquelle j'ai le nom du fichier .mp3 à lire.
Manque de pot j'ai des centaines de fichiers qui comportent des caractères spéciaux :
20200426 - SPINOZA - Le libre-arbitre n'est-il qu'une illusion - Le Précepteur.mp3
Je traite la chaîne reçue avec :
function Init() {
var param = window.location.search;
alert (' URL courante : \n' +param);
const urlParams = new URLSearchParams (param);
const name = urlParams.get ('name');
alert (' NAME_1 : \n' +name);
const nameVrai = CaractURL ( name );
alert (' NAMEVRAI : \n' +nameVrai);
const titre = urlParams.get ('titre');
alert (' TITRE : \n' +titre);
const titreVrai = CaractURL ( titre );
alert (' TITREVRAI : \n' +titreVrai);
const temps = urlParams .get ('temps');
lecture_Moreau(nameVrai,titreVrai,temps);
}
function CaractURL( Url ) {
alert("URL1: "+ Url);
Url2 = Url.replace(/%E9/g, 'é');
Url2 = Url.replace(/%CF/g, 'Ï');
alert("URL2: "+ Url2);
return Url2;
}
Comme vous pouvez le voir sur l'image jointe, les 'é' et 'Ï' ne sont pas convertis.
Je sèche sur ce pb rudimentaire depuis ce matin, j'ai essayé sans succès le replace avec des tas de codifications :
Url.replace(/%E9/g, '\u00e9');
...
...
C'est quoi le truc que je ne vois pas encore en JavaScript ?
[Édit] Je précise que tous les programmes (.pl ; .bat ; html & .js) sont codés utf8. D'ailleurs au démarrage je force un titre qui contient des caractères spéciaux, qui passe bien dans le html.
Visiblement c'est le URLSearchParams (param) qui convertit tout seul les %20 en espaces.
Pour info je lis très bien des .mp3 dont les noms ne comportent pas de caractères spéciaux. Quand même
[Édit:13/08 à 06:30]
Je ne sais pas comment est codée la chaîne renvoyée par urlParams.get ('name'); mais aucune transformation ne fonctionne ! J'ai essayé :
function CaractURL( Url ) {
alert("URL1: "+ Url);
Url2 = Url.replace(/ /, 'Coucou');
Url2 = Url.replace(/\u0020/, 'Coucou');
// ET BIEN D'AUTRES.....
Url2 = Url.replace(/%E9/g, 'é');
Url2 = Url.replace(/%CF/g, 'Ï');
// SEUL CE QUI SUIT FONCTIONNE :
Url2 = 'TTTTTTTTTTTTTTTTTTTTTttttttttt';
alert("URL2: "+ Url2);
return Url2;
}
Ou c'est ma syntaxe Url.replace , qui foire, pourtant c'est ce que je trouve sur Internet...
Merci pour vos suggestions !
https://zupimages.net/viewer.php?id=21/32/k0cy.jpg
Modifié par dmganges (13 Aug 2021 - 06:28)