广州凡科互联网科技有限公司

营业时间
MON-SAT 9:00-18:00

全国服务热线
18720358503

公司门店地址
广州市海珠区工业大道北67号凤凰创意园

纯 JavaScript 版的 ANSI 的 URL 编号与编解码

日期:2021-02-20 浏览:

JavaScript 版本号中能够根据 encodeURI, encodeURIComponent 完成 UTF-8 的 URL 编号与编解码,但是完成 ANSI 的就得自身敲代码了。

以前有一个 JavaScript 与 VBScript 混和的 ANSI 的 URL 编号与编解码,缺憾的是一些访问器没法适用 VBScript,因此才拥有文中纯 JavaScript 版的。

Unicode 与 ANSI 的编号变换

ANSI 编号与标识符中间的变换

function str2asc(str)
{
  var n = UnicodeToAnsi(str.charCodeAt(0));
  var s = n.toString(16);
  return s.toUpperCase();
}

function asc2str(code)
{
  var n = AnsiToUnicode(code);
  return String.fromCharCode(n);
}

URL 编号与编解码

function urlEncode(str)
{
  var ret = "";
  var strSpecial = "!\"#$% ’()*+,/:; = ?[]^`{|}~%";
  var tt = "";
  for(var i = 0; i str.length; i++)
  {
  var chr = str.charAt(i);
  var c = str2asc(chr);
  tt += chr + ":" + c + "n";
  if (parseInt("0x" + c) 0x7f)
  {
  ret += "%" + c.slice(0,2) + "%" + c.slice(-2);
  }
  else
  {
  if (chr == " ")
  ret += "+";
  else if (strSpecial.indexOf(chr) != -1)
  ret += "%" + c.toString(16);
  else
  ret += chr;
  }
  }
 
  return ret;
}
 
function urlDecode(str)
{
  var ret = "";
  for (var i = 0; i str.length; i++)
  {
  var chr = str.charAt(i);
  if (chr == "+")
  {
  ret += " ";
  }
  else if (chr == "%")
  {
  var asc = str.substring(i+1, i+3);
  if (parseInt("0x"+asc) 0x7f)
  {
  ret += asc2str(parseInt("0x" + asc+str.substring(i+4, i+6)));
  i += 5;
  }
  else
  {
  ret += asc2str(parseInt("0x"+asc));
  i += 2;
  }
  }
  else
  {
  ret += chr;
  }
  }
 
  return ret;
}

实例

document.write(urlEncode("千一互联网"));
document.write(urlDecode("%C7%A7%D2%BB%CD%F8%C2%E7"));

有关阅读文章

URL 编号专题讲座


网站知识

联系方式丨CONTACT

  • 全国热线:18720358503
  • 传真热线:18720358503
  • Q Q咨询:2639601583
  • 企业邮箱:2639601583@qq.com

首页
电话
短信
联系