Всегда декодирует на входе, а кодирует на выходе. (Для этого должна быть удобная мнемоника: возможно, " снимите свой код [пальто], когда входите в помещение ".)
Декодирование на входе: вы говорите, что кодировка базы данных - "UTF_8_bin". Используете ли вы MySQL-Python ? Если это так, то вы можете установить опцию use_unicode
при подключении к базе данных. Затем все строки извлекаются из базы данных в Юникоде, поэтому вам не нужно беспокоиться о их декодировании.
Кодирование на выходе: Вы можете узнать текущую кодировку символов (или " кодовая страница ", как они ее называют в Windows) с помощью команды chcp
. Давайте предположим, что это кодовая страница 1252 . Тогда вы можете написать
print text.encode('windows-1252')
для создания чего-то, что вы можете прочитать из командной строки Windows.
Если вы записываете строки обратно в другую базу данных MySQL, используя MySQL-Python, вам не нужно делать ничего особенного: MySQL-Python утверждает, что «вы всегда можете писать строки Unicode» (независимо от того, указали ли вы use_unicode
при открытии соединения).