当我在没有 ú 的情况下发送它时,我正在发送以下字符串“未找到搜索”,它完全可以使用它,但是当它与 ú 一起发送时,我收到以下错误:
未捕获的 DOMException:无法在 'Window' 上执行 'atob':要解码的字符串未正确编码。
js代码如下:
w._getParameterByName = function (name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results === null ? "" : atob(decodeURIComponent(results[1].replace(/\+/g, " ")));
};
我感谢您的帮助
atob
问题是只要他们btoa
只接受占1个字节的字符,ú
而且是16位的utf8字符,即占2个字节,就会产生错误。如果你可以正确编码,但问题是解码,这可能是由于你这样做的方式,也许只是放在
atob
里面:Mozilla Developer提出的解决方案是对字符串进行编码,这样可以确保所有字符只占用 1 个字节:
更新:
如果您从 PHP 中使用 base64 编码,则该选项可能非常简单:
然后使用 javascript
atob()
来检索原始字符串: