UnicodeEncodeError:Кодек ascii не может кодировать символы из-за één из базы данных
-
21-12-2019 - |
Вопрос
У меня есть поле для получения из базы данных, которое содержит строку с этой частью, и при получении этого я получаю ошибку:
«Ошибка ЮникодЭнкоде:Кодек 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()
на этой линии.