2016-03-15 11 views
6

Mam tablicę z niektórych adresów URL, takie jak:javascript przejść do adresu URL z znaki Unicode

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

używam kątowe, z ng-repeat stworzyłem klikalny listę, która wykonywać przekierowanie do żądanego adresu URL, ale kiedy kliknąłem adres URL Unicode, przeglądarka nie może go znaleźć.

Próbuję z , ale pobiera to: path/url/unic%C3%B3de.txt, który nie został znaleziony. Zamiast tego, kiedy uzyskuję dostęp ręcznie do: path/url/unicóde.txt (jest to w ftp, więc przechodzę folder po folderze, aż dojdzie do pliku), adres URL w przeglądarce mówi teraz: path/url/unic%F3de.txt, który różni się od wartości, która dała mi encodeURI().

Jak mogę kliknąć ten element listy i zostać przekierowany do żądanego adresu URL w Unicode?

Oto kod: 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]); 
}; 

Jest to aplikacja budować z elektronu + kątowy, co chcę tutaj jest to, że gdy użytkownik kliknie element, otwarty jego domyślna przeglądarka i przekierowanie do adresu URL:

+0

Spróbuj dodać 'charset =" utf-8 "' do swojego znacznika skryptu. –

+0

"Stworzyłem klikalną listę, która wykonuje przekierowanie do pożądanego adresu URL" - trzeba zobaczyć kod, ponieważ wydaje się, że robisz coś złego w kwestii dekodowania adresu URL (lub jego braku). – Amadan

Odpowiedz

0

Użyj JavaScript escape() Funkcja. Daje pożądaną wydajność.

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

Uwaga: Funkcja escape() została zaniechana w wersji JavaScript 1.5.

+0

escape() jest przestarzałe, jak mówisz, i powinno zostać zastąpione przez encodeURI(), ale w tym przypadku działa, a encodeURI() nie. dzięki za odpowiedź! – mos