我正在开发一个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()))
以上两个示例都会产生相同的错误。
谢谢。