Как сравнить строки с различной кодировкой в ​​python? - PullRequest
0 голосов
/ 26 июня 2019

У меня есть функция, которая работает с 2 строками. Когда я звоню:

print("%s %s" % (first, second))

Я получил:

role/token:9Gxc8Q role/token:9Gxc8Q

Но first == second ложно.

Я подумал, что есть проблема с кодировкой, и попробовал следующее:

frsts.encode('utf-8') == second.encode('utf-8')

И снова стал ложным.

Есть идеи, как сравнить эти строки?

ОБНОВЛЕНО

print("%s %s" % (type(first), type(second)) -> <type 'unicode'> <type 'str'>

print("%r %r" % (first, second)) -> <type 'unicode'> <type 'str'>

Строковые значения, закодированные в base64 и затем сравненные: cm9sZS90b2tlbjo5R3hjOFE== и cm9sZS90b2tlbjo5R3hjOFE==

1 Ответ

0 голосов
/ 26 июня 2019

Оказывается, что первая строка выходит наружу и имеет правильное кодирование base64, а вторая кодируется в python с b64encode, который добавляет \n. И делает строку не равной. Изменение на b64encode исправило ошибку.

...