我已经阅读了这篇以及更多文章:
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。
答案 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
。