@
Zzzzzzzzz @
dzxx36gyy @
Jaylee @
zhidian 唉,又过了 10 分钟,才发现代码里的一个 escape 写反错误,是我问错了地方。
其实出问题的是这个小转码库:
function fwescape(s) {
return s == null ? s : reverse(b64encode(unescape(encodeURIComponent(s))))
}
function fwunescape(s) {
return s == null ? s : decodeURIComponent(escape(b64decode(reverse(s))))
}
function reverse(s) {
return s.split('').reverse().join('')
}
function b64encode(s) {
return typeof btoa === 'undefined' ? Buffer.from(s).toString('base64') : btoa(s)
}
function b64decode(s) {
return typeof atob === 'undefined' ? Buffer.from(s, 'base64').toString() : atob(s)
}
fwunescape(fwescape('abc 我是谁😸')) === 'abc 我是谁😸'
主要搞的地方在于,这段代码分别能通过前端浏览器里和后端 NodeJS 里的单元测试!
但是前后端互转英文没问题中文乱码,然后我怀疑是 base64 的问题单独提出来试了一下还不小心写错了测试字串。