Конвертировать Unicode в UTF-8 Python - PullRequest
4 голосов
/ 19 июля 2011

Я работаю с базой данных, в которой разбросаны такие символы, как: «.Мне нужно взять это из базы данных, преобразовать его в UTF-8, а затем импортировать в другую базу данных, используя python.При печати в командной строке Windows эти символы выглядят следующим образом: \ xe2 \ u20ac \ u2122.Я пробовал различные комбинации .decode (), .encode () и unicode () для преобразования данных, но я действительно застрял.

1 Ответ

10 голосов
/ 19 июля 2011

Всегда декодирует на входе, а кодирует на выходе. (Для этого должна быть удобная мнемоника: возможно, " снимите свой код [пальто], когда входите в помещение ".)

Декодирование на входе: вы говорите, что кодировка базы данных - "UTF_8_bin". Используете ли вы MySQL-Python ? Если это так, то вы можете установить опцию use_unicode при подключении к базе данных. Затем все строки извлекаются из базы данных в Юникоде, поэтому вам не нужно беспокоиться о их декодировании.

Кодирование на выходе: Вы можете узнать текущую кодировку символов (или " кодовая страница ", как они ее называют в Windows) с помощью команды chcp. Давайте предположим, что это кодовая страница 1252 . Тогда вы можете написать

print text.encode('windows-1252')

для создания чего-то, что вы можете прочитать из командной строки Windows.

Если вы записываете строки обратно в другую базу данных MySQL, используя MySQL-Python, вам не нужно делать ничего особенного: MySQL-Python утверждает, что «вы всегда можете писать строки Unicode» (независимо от того, указали ли вы use_unicode при открытии соединения).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...