Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/459.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Url中每个字符的编码,包括-.!~*';()在javascript中_Javascript - Fatal编程技术网

Url中每个字符的编码,包括-.!~*';()在javascript中

Url中每个字符的编码,包括-.!~*';()在javascript中,javascript,Javascript,我使用encodeURIComponent()方法对javascript中的url进行编码。通过使用该方法,一些字符也没有被编码。有人能推荐一种方法或代码对url中的每个字符进行编码,包括 - _ . ! ~ * ' ()。谢谢。只能在URL的“片段”(组件)上使用encodeURIComponent方法。它用于在从用户提供的或计算的片段构建URL时,将查询字符串或路径放在一起 真的不可能有一个通用的“正确编码我的URL”方法,因为它不能告诉你URL的哪些部分需要编码,哪些部分不需要编码。相反,

我使用encodeURIComponent()方法对javascript中的url进行编码。通过使用该方法,一些字符也没有被编码。有人能推荐一种方法或代码对url中的每个字符进行编码,包括

- _ . ! ~ * ' ()。谢谢。

只能在URL的“片段”(组件)上使用
encodeURIComponent
方法。它用于在从用户提供的或计算的片段构建URL时,将查询字符串或路径放在一起


真的不可能有一个通用的“正确编码我的URL”方法,因为它不能告诉你URL的哪些部分需要编码,哪些部分不需要编码。相反,在将URL片段添加到最后一个字符串之前,请对它们使用
encodeURIComponent()

您可以编写自己的编码和解码函数:

function encodeString(s) {
  var result = [];
  for (var i=0, iLen=s.length; i<iLen; i++) {
    result.push('%' + s.charCodeAt(i));
  }
  return result.join('');
}

function decodeString(s) {
  s = s.split('%');
  result = [];

  for (var i=0, iLen=s.length; i<iLen; i++) {
    result.push(String.fromCharCode(s[i]));
  }
  return result.join('');
}

var s = "- _ . ! ~ * ' ( )";

alert(encodeString(s)); // %45%32%95%32%46%32%33%32%126%32%42%32%39%32%40%32%41

alert(decodeString(encodeString(s))); // - _ . ! ~ * ' ( )
函数编码字符串{
var结果=[];
对于(var i=0,iLen=s.length;我只对URI/URL中需要编码的字符进行编码,它不会对不需要编码的内容进行编码。您可以使用对任何字符进行编码,但可能需要编写自定义解码器。
function encodeString(s) {
  var result = [];
  for (var i=0, iLen=s.length; i<iLen; i++) {
    result.push('%' + s.charCodeAt(i).toString(16));
  }
  return result.join('');
}

function decodeString(s) {
  s = s.split('%');
  result = [];

  for (var i=0, iLen=s.length; i<iLen; i++) {
    result.push(String.fromCharCode(parseInt(s[i], 16)));
  }
  return result.join('');
}

alert(encodeString(s)); // %2d%20%5f%20%2e%20%21%20%7e%20%2a%20%27%20%28%20%29