2017-01-30 2 views
1

У меня есть эта строка в кодировке Base64: const encodedString = 'eyJ1c2VybmFtZSI6Imxha2VzYXJlIiwib2F1dGhQcm92aWRlciI6ImdpdGh1YiIsIm9hdXRoSWQiOiI3NTc4NTU5IiwiYXZhdGFyVXJsIjoiaHR0cHM6Ly9hdmF0YXJzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91Lzc1Nzg1NTk_dj0zIiwiaWF0IjoxNDg1ODAxODI3fQ'; ('{"username": "lakesare", "oauthProvider": "GitHub", "oauthId": "7578559", "avatarUrl": "https://avatars.githubusercontent.com/u/7578559?v=3", "IAT": 1485801827})Декодирование base64 string с atob вызывает ошибку, хотя у него нет никаких символов, отличных от ASCII

Декодирование его в узел работает:

Buffer.from(encodedString, 'base64').toString(); 

Декодирование его в браузере (Не удалось выполнить «atob» в «Окно»: строка, подлежащая декодированию, неправильно закодирована.):

atob(encodedString); 
+0

ну, '_' неправильно для начала - это должен быть'/' –

+0

@JaromandaX, yep, я видел, что' btoa' возвращает строку '/' -ed. В моем случае строка, закодированная в base64, была сгенерирована функцией 'jwt.sign()'. , если у вас есть идея о том, почему 'jwt.sign' и' btoa' кодируют строки по-разному - прокомментируйте. – lakesare

ответ

0

Я закончил с использованием buffer пакета (https://github.com/feross/buffer, npm install --save buffer):

import { Buffer } from 'buffer/'; 
Buffer.from(encodedString, 'base64').toString() 

возвращает правильно декодированного строку.

Смежные вопросы