我正在编写一个集成在两个第三方库之间的组件。
从第一个库中获取一个URL,并将其传递给第二个库。
我得到的网址格式为:
意思是它包括像" ="和" +"以编码格式。
当我按原样将其传递给第二个库时,库无法下载该文件。 从该库的来源,我看到它试图执行编码(url)'在下载文件之前,这会导致它再次被编码而不需要。
我尝试在将URL传输到第二个库(使用 decodeURI 或 decodeURIComponent )之前对其进行解码,然后对其进行编码并成功下载该文件,但编码()不编码所有字符,它有一些保留字符(例如' +'和' ='),因此结果网址不会结束与原版相同。
总结我的问题:
假设我无法控制2个库的代码,给定' encodedUrl',我该如何实现' myFunc(str)'这样:
encodeURI(myFunc(encodedUrl)) === encodedUrl
每个可能的网址。
答案 0 :(得分:0)
由于第一个库为您提供了已编码的网址,因此您无法做到。例如,myFunc
只能转为"%2B"进入" +",因为" +"是encodeURI
唯一会变成"%2B"。这使得myFunc === decodeURIComponent
,你知道这意味着什么。