Сбой кодировки Base64 для нелатинских символов - PullRequest
0 голосов
/ 27 октября 2018

Я работаю над проектом 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()))

Оба приведенных выше примера даютта же ошибка.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...