【发布时间】:2021-04-07 13:29:39
【问题描述】:
我真的被这个搞糊涂了……太不可思议了,我发了一张 Chrome 调试器的屏幕截图:
我很快在测试中编写了这个函数来比较 2 个 base64 编码的字符串(a 可能比b 短)。
但是它总是返回 0,就好像第一个字符不同一样。
实际上它们是:字符串a 的第一个字符ca 是正确的,但是由于某种神秘的原因,字符串b 的第一个cb 是空的!字符串 b 看起来正确,长度正确(685 个字符)并且类型正确 typeof(b) == 'string'
调用代码(实际上是 TypeScript)是这样的,以防万一:
requestGET('qBandConfig.sql', { jobid: this.job.jobid }) // get the blob from db
.then(json => {
const base64:string = json[0]['bandconfig'] // type enforced to make sure
this.editor.setBands(base64)
.then(() => {
// test that we find the same blob when re-encoding
const check:string = this.editor.getBandsBLOB()
const diff = firstDiff(check, base64) // always return 0 ????
if (diff > -1 && check[diff] !== '=')
this.log.warning('encoded blob ', check, ' is different from decoded ', base64)
})
})
【问题讨论】:
-
我们应该在屏幕截图中找到问题吗?比较调试器中的值,提取一个失败的最小集合并将它们发布在这里,检查任何“不可见”的 unicode 字符(
console.log([...a.slice(0,2)])),...
标签: javascript string charat