坚实的javascript编码uri

时间:2016-07-07 08:08:50

标签: javascript url encode

我已经阅读了这篇以及更多文章:

When are you supposed to use escape instead of encodeURI / encodeURIComponent?

我还没有找到可靠的编码/解码uri解决方案。

我们说我有这些变量

var first = 'Hello&and';
var second = "Let's have cite";
var third = 'And "hash,.#$';
var fourth = 'åäö other strange chars';

未编码的网址将是:

var url 'http://example.com/?first=' + first + '&second=' + second + '&third=' + third + '&fourth=' + fourth;

稍后它应该在ajax请求中,如:

xhr = new XMLHttpRequest();
xhr.open('POST', url );

我试过了:

var url 'http://example.com/?first=' + encodeURIComponent(first);

但它不适用于#。那么什么是所有角色的可靠编码解决方案?

我不使用jQuery,只是javascript。

2 个答案:

答案 0 :(得分:2)

编码uri参数时使用encodeURIComponent。使用该函数对主题标签进行编码时,将生成字符串“%23”。

所以在你的例子中:

var first = 'Hello&and';
var second = "Let's have cite";
var third = 'And "hash,.#$';
var fourth = 'åäö other strange chars';
var url = 'http://example.com/?first=' + encodeURIComponent(first) + '&second=' + encodeURIComponent(second) + '&third=' + encodeURIComponent(third) + '&fourth=' + encodeURIComponent(fourth);

将导致url变量包含字符串:

http://example.com/?first=Hello%26and&second=Let's%20have%20cite&third=And%20%22hash%2C.%23%24&fourth=%C3%A5%C3%A4%C3%B6%20other%20strange%20chars

可以找到encodeURIComponent函数的更多信息here

  

(来自w3学校的引文)此功能对特殊字符进行编码。在   另外,它编码以下字符:,/? :@& = + $#

答案 1 :(得分:-2)

您可以尝试使用escape()功能。这为我节省了很多次。

escape('#')确实会产生%23