2016-03-15 16 views
6

Ho un array con alcuni URL come questi:javascript Vai a URL con caratteri Unicode

[ 
    "path/to/url1", 
    "path/to/url2", 
    "path/url/unicóde.txt" 
] 

sto usando angolare, con ng-repeat ho creato un elenco cliccabile che eseguire un reindirizzamento a URL desiderato, ma, quando ho cliccato su unicode url, il browser non può trovarlo.

Provo con , ma recupera questo: path/url/unic%C3%B3de.txt che non è stato trovato. Invece, quando accedo manualmente a: path/url/unicóde.txt (questo è in un ftp, quindi, vado cartella per cartella fino ad arrivare al file) l'url nel browser ora dice: path/url/unic%F3de.txt, che è diverso dal valore che mi ha dato encodeURI().

Come posso fare clic su questo elemento dell'elenco e per essere reindirizzato all'URL unicode desiderato?

Ecco il codice: HTML:

<md-list-item ng-repeat="found in foundFiles"> 
     <h3>{{ found.name }}</h3> 
     <p ng-click="openFtpLink(found.url)">{{ found.url}}</p> 
    </md-list-item> 

javascript:

$scope.foundFiles = [...] 
$scope.openFtpLink = function (ftpLink) { 
    var spawn = require('child_process').spawn; 
    spawn('cmd.exe', ['/c', 'start', '', ftpLink]); 
}; 

Si tratta di un'applicazione a costruire con l'elettrone + angolare, quello che voglio è che quando l'utente fa clic sulla voce, aperto il suo browser predefinito e reindirizzarlo all'URL

+0

Prova ad aggiungere 'charset =" utf-8 "' al tuo tag script. –

+0

"Ho creato un elenco cliccabile che esegue un reindirizzamento all'URL desiderato" - è necessario vedere il codice per questo, poiché sembra che tu stia facendo qualcosa di sbagliato riguardo alla decodifica dell'URL (o alla sua mancanza). – Amadan

risposta

0

Utilizzare la funzione JavaScript escape(). Ti dà l'output desiderato.

alert(escape("path/url/unicóde.txt"));

Nota: la funzione è stata sconsigliata a escape() versione JavaScript 1.5.

+0

escape() è deprecato, come dici tu, e dovrebbe essere sostituito con encodeURI(), ma, in questo caso, funziona e encodeURI() no. grazie per la tua risposta! – mos