PHP中使用base64_encode编码接着在js中使用atob方法解码会出现中文字符乱码的问题

原创 野人  2023-04-23 08:46  阅读 35 次

最近在搞一个插件的需求,需要进行(伪)加密处理,第一时间想到的就是base64编码,因为比较常见,且自己比较熟悉,开发起来也快,同时又兼容前后端。

这也是第一个由后端来编码,前端来解码的需求,所以还是踩到了不少坑,就比如标题所说的会导致中文乱码的问题。

首先,我知道前端atob方法解码中文会出现问题,所以当时会借助一个现成的解决方法,但是因为考虑到插件的包大小,当时就没有过多的去考虑用包了。

其次,因为我一直以为后端编码的那段代码中没有中文的,所以就一直怀疑是PHP中的base64_encode编码跟前端的不一致导致的。

最后就是定位到就是前端的atob方法不能解码中文的原因。

所以下面就给大家分享下,可以有效的解决的方面。

let encode=window.btoa(unescape(encodeURIComponent('中文a')));
console.log(encode);// 'JUU0JUI4JUFEJUU2JTk2JTg3YQ=='
let decode=decodeURIComponent(escape(window.atob(encode)));
console.log(decode);// '中文a'

本文地址:https://www.yerenwz.com/11569.html
版权声明:本文为原创文章,版权归 野人 所有,欢迎分享本文,转载请保留出处!

发表评论