Base64编码对非拉丁字符失效

5

我正在开发一个VueJS项目,根据输入生成SVG图像。生成后,我将它们作为base64编码字符串发送到后端API。

现在,每当我尝试使用UTF8字符对字符串进行编码时,就会出现以下错误:

Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.

我尝试通过替换HTML中的所有字符为它们的Unicode编码点来解决这个问题。然而,每当我尝试获取DOM元素时,Unicode编码的字符会被还原回它们的纯文本格式。
如何将HTML作为base64编码的字符串获取?
该问题可以在此处的代码示例中看到。
我已经尝试过使用XMLSerializer和运行innerHTML.toString()方法来解决该问题。
let svgEl = this.$el.querySelector('.svg-container svg')
if (!svgEl) {
  console.log('no poster element')
  return
}

// Using XMLSerializer:
console.log(btoa(new XMLSerializer().serializeToString(posterEl))

// Using innerHTML:
console.log(btoa(posterEl.innerHTML.toString()))

以上两个示例都会产生相同的错误。

谢谢。


1
https://developer.mozilla.org/en-US/docs/Web/API/WindowBase64/Base64_encoding_and_decoding#The_Unicode_Problem - Evert
1个回答

1

1
unescape 在 JavaScript 1.5 中已被弃用 - Nabia Salman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接