Прежде всего, прочитайте this article on Unicode. Строка, которую вы используете, кодируется в некотором кодировке, но не UTF8. Причина, по которой мы можем сказать, что это не UTF8, состоит в том, что 7-й байт 0xa9 (= 169) не находится в диапазоне 0-127 (ASCII), но ему не предшествует старший байт.
Итак, трюк заключается в том, чтобы определить, что это за кодировка. У нас есть намек: кодировка должна представлять байт 0xa9 в качестве символа ©. Я бы предположил, что это либо коды Windows-1252, либо Latin-1, потому что они очень распространены, и поиск A9 в сетке (кодировка символов по сути такая же, как и игра линкоров) дает знак авторского права в обоих.
>>> unicode(' `;;][@+©')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc2 in position 8: ordinal not in range(128)
>>> unicode(' `;;][@+©', 'latin-1')
u' `;;][@+\xc2\xa9'
>>> unicode(' `;;][@+©', 'cp1252')
u' `;;][@+\xc2\xa9'
укажите кодировку данных, которые вы получаете из своей базы данных. Мы не можем догадываться, что это такое ... это _your_ database .... и, очевидно, это не utf-8 .... –