Python декодирует данные в кодировке utf-8 - PullRequest
0 голосов
/ 26 апреля 2019

я боролся с декодирования закодированной строки.

1002 * str2 = b'W3t2YWx1ZToxMCxtb2RlOiJsb3cifSx7dmFsdWU6NSxtb2RlOiJpbnRlcm1lZGlhdGUifSx7dmFsdWU6MTAsbW9kZToiZXhwZXJ0In0se3ZhbHVlOjIsbW9kZToiYWRtaW4ifV0 = ' 1004 * Когда я пытаюсь расшифровывает выше строки.Я получаю ниже результата

печать (str1.decode ( 'UTF-8'))

1008 * W3t2YWx1ZToxMCxtb2RlOiJsb3cifSx7dmFsdWU6NSxtb2RlOiJpbnRlcm1lZGlhdGUifSx7dmFsdWU6MTAsbW9kZToiZXhwZXJ0In0se3ZhbHVlOjIsbW9kZToiYWRtaW4ifV0 = 1010 * Пожалуйста, помогите. 1012 * Не знаю, почемучасть декодирования печатается.Я просматривал документы, дублировал вопросы, но не смог найти правильный ответ.

Ожидаемый результат: [{значение: 10, режим: "низкий"}, {значение: 5, режим: "промежуточный"},{значение: 10, режим: "эксперт"}, {значение: 2, режим: "администратор"}]

Фактический: W3t2YWx1ZToxMCxtb2RlOiJsb3cifSx7dmFsdWU6NSxtb2RlOiJpbnRlcm1lZGlhdGUifSx7dmFsdWU6MTAsbW9kZToiZXhwZXJ0In0se3ZhbHVlOjIsbW9kZToiYWRtaW4ifV0 =

Ответы [ 2 ]

2 голосов
/ 26 апреля 2019

Ваша строка кодируется base64 . Попробуйте:

import base64

str2=b'W3t2YWx1ZToxMCxtb2RlOiJsb3cifSx7dmFsdWU6NSxtb2RlOiJpbnRlcm1lZGlhdGUifSx7dmFsdWU6MTAsbW9kZToiZXhwZXJ0In0se3ZhbHVlOjIsbW9kZToiYWRtaW4ifV0='

base64.b64decode(str2).decode('utf8')

результат:

'[{value:10,mode:"low"},{value:5,mode:"intermediate"},{value:10,mode:"expert"},{value:2,mode:"admin"}]'
0 голосов
/ 26 апреля 2019

Фактически это кодировка base64, а не utf-8

Схемы кодирования Base64 обычно используются, когда необходимо кодировать двоичные данные, которые необходимо хранить и передавать по носителям, предназначенным для работы стекстовые данные.Это необходимо для того, чтобы данные оставались без изменений во время транспортировки

. Для их декодирования вам потребуется следующее

import base64
str2 = b"W3t2YWx1ZToxMCxtb2RlOiJsb3cifSx7dmFsdWU6NSxtb2RlOiJpbnRlcm1lZGlhdGUifSx7dmFsdWU6MTAsbW9kZToiZXhwZXJ0In0se3ZhbHVlOjIsbW9kZToiYWRtaW4ifV0="
plaintext = base64.b64decode(str2)
print(plaintext)

# out : b'[{value:10,mode:"low"},{value:5,mode:"intermediate"},{value:10,mode:"expert"},{value:2,mode:"admin"}]'
...