Я работаю над проектом VueJS, в котором я генерирую изображения SVG на основе входных данных.После того, как они были сгенерированы, я отправляю данные из них во внутренний API в виде строки в кодировке base64.
Теперь, когда я пытаюсь кодировать строку с символами UTF8, я получаю следующую ошибку:
Uncaught DOMException: Failed to execute 'btoa' on 'Window': The string to be encoded contains characters outside of the Latin1 range.
Я попытался решить проблему, заменив все символы в HTML на их кодовые точки Unicode.Однако всякий раз, когда я пытаюсь получить элемент DOM, символы в кодировке Юникод возвращаются в их обычный текстовый формат.
Как я могу получить 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()))
Оба приведенных выше примера даютта же ошибка.
Спасибо.