C'è qualche uso valido per la funzione encodeURI di javascript?dovrebbe mai essere usato encodeURI?
Per quanto posso dire, quando si sta cercando di fare una richiesta HTTP si dovrebbe neanche avere:
- un URI completo
- qualche frammento che si desidera mettere in un URI, che è o una stringa unicode o sequenza di byte UTF-8
Nel primo caso, ovviamente non è necessario fare nulla per richiederlo. Nota: se in realtà vuoi passarlo come parametro (ad es. Url = http ...), in realtà hai un'istanza del secondo caso che sembra un URI.
Nel secondo caso, si dovrebbe sempre convertire una stringa unicode in UTF-8, e quindi chiamare encodeURIComponent per sfuggire tutti caratteri prima di aggiungerlo a un URI. (Se si ha una sequenza di byte UTF-8 invece di una stringa unicode, è possibile saltare il passaggio convert-to-utf8).
Supponendo di non aver perso nulla, non posso vedere un uso valido per encodeURI. Se lo usi, è probabile che tu abbia costruito un URI non valido e poi abbia tentato di "sanitizzarlo" dopo il fatto, il che è semplicemente impossibile poiché non sai quali caratteri sono stati intesi letteralmente e quali sono stati pensati per essere sfuggiti .
Ho visto molti consigli contro l'uso di escape(), ma non vedo nessuno scoraggiare l'encodeURI. Mi manca un uso valido?
Il "frammento che si desidera inserire in un URI", credo, può essere definito un "componente URI". "Nel secondo caso, dovresti sempre convertire una stringa unicode in UTF-8" - non in JavaScript. 'encodeURIComponent' convertirà automaticamente la stringa in UTF-8 prima (e' decodeURIComponent' convertirà gli ottetti UTF-8 in caratteri Unicode). – mgiuca