我有一个网站,用户可以在其中添加多个项目,有时URL可能很长。我想通过使用base64编码,我传递了URL,但它包含一个斜杠,我用它来分隔项目,因为我的Web服务器无法处理长度超过255个字符的路径名(2个斜杠之间的任何东西)或我' d得到403错误。
我是否有另一种方法可以在javascript中快速编码数据,以便在结果中出现斜线的可能性为0%?
我正在寻找处理器不太密集的东西,如果可能的话,我想找一些比字符交换更好的东西。
我会理解我是否需要访问一个库,但javascript内置的唯一编码(据我所知)是base64(通过atob函数),我想要一些不同的东西。
我也希望能够使解决方案适用于较旧的Web浏览器。
答案 0 :(得分:2)
您需要的是encodeURIComponent,这是javascript规范的一部分,并自动包含在所有JavaScript环境中
var url = 'example.com/someextenstion/' + encodeURIComponent(theString);
答案 1 :(得分:0)
有很多方法可以解决这个问题,但最简单的方法之一就是采用atob
和btoa
的实现方式并修改它以使用-
代替/
编码时{1}}您必须重命名这些功能,以免他们屏蔽标准功能,但这里有一些JavaScript源代码可以解决这个问题:github。在该特定实现中,只需使用/
(或您选择的任何字符)替换_ALPHA
中的-
。
正如Amit建议的那样,可能会更快:使用标准函数并在转换时快速替换/
:str.replace(/\//g,'-');
并在解码时执行相反的操作,但它并没有&#39看起来性能在这个应用程序中是至关重要的。