UnicodeEncodeError:Кодек ascii не может кодировать символы из-за één из базы данных

StackOverflow https://stackoverflow.com//questions/24052342

Вопрос

У меня есть поле для получения из базы данных, которое содержит строку с этой частью, и при получении этого я получаю ошибку:

«Ошибка ЮникодЭнкоде:Кодек ascii не может кодировать символы в позициях 12–15:порядковый номер вне диапазона(128)"

Я искал эту ошибку, и у других людей возникали проблемы из-за юникода, который начинается примерно так u'\xa0, и т. д.Но в моем случае, я думаю, это из-за специальных символов.Я не могу вносить изменения в базу данных, так как у меня нет к ней доступа.Я могу просто получить к нему доступ.

Код здесь:(на самом деле это вызов внешнего URL-адреса)

req = urllib2.Request(url)
req.add_header("Content-type", "application/json")
res = urllib2.urlopen(req,timeout = 50)         #50 secs timeout
clientid = res.read()
result = json.loads(clientid)

Затем я использую переменную результата, чтобы получить вышеупомянутую строку, и получаю ошибку в этой строке:

updateString +="name='"+str(result['product_name'])+"', "
Это было полезно?

Решение

Вам необходимо найти кодировку, которая используется для ваших данных, прежде чем они будут вставлены в базу данных.Предположим, что это UTF-8, поскольку он наиболее распространен.

В этом случае вам понадобится декодировать UTF-8 вместо декодирования ascii.Вы не предоставили никакого кода, поэтому я предполагаю, что у вас есть "data".decode().Пытаться "data".decode("utf-8"), и если ваши данные были закодированы с использованием этой кодировки, она будет работать.

Другие советы

Значит, это звучит мне, как строка уже была Unicode.Так что снимите генеракодицетагкод и функции str() на этой линии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top