import base64
a = base64.b64encode(bytes(u’complex string: ñáéíóúÑ’, «utf-8»))
# a: b’Y29tcGxleCBzdHJpbmc6IMOxw6HDqcOtw7PDusOR’
b = base64.b64decode(a).decode(«utf-8», «ignore»)
print(b)
# b :complex string: ñáéíóúÑ
import base64
a = base64.b64encode(bytes(u’complex string: ñáéíóúÑ’, «utf-8»))
# a: b’Y29tcGxleCBzdHJpbmc6IMOxw6HDqcOtw7PDusOR’
b = base64.b64decode(a).decode(«utf-8», «ignore»)
print(b)
# b :complex string: ñáéíóúÑ
Если собираемся внутри скрипра на питоне писать текст на русском или ещё каком языке кроме английского, то в начало файла нужно вставить строку:
# -*- coding: utf-8 -*-
Иначе скрипт выплюнет ошибку вроде этой:
File "1.py", line 1 SyntaxError: Non-ASCII character '\xd0' in file 1.py on line 1, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
Вовремя пригодилась статья: [Qt] UTF в 1251 и 1251 в UTF. Как раз занимался расшифровкой дампа базы данных main.db от телефона Motorola A1200 (формат базы данных — BerkleyDB4). Самый полезный кусок кода:
QByteArray msg = QByteArray::fromHex("cde5eff0e0e2e8ebfcedeee520f1eeeee1f9e5ede8e5204b4f4e5f544d5f484f53544b4e4620eef220d3cad2d121"); QTextCodec *codec = QTextCodec::codecForName("Windows-1251"); QString strf = codec->toUnicode(msg); qDebug() << strf;