UnicodeEncodeError:'ascii'编解码器无法编码由于数据库中的字符而导致的字符

时间:2014-06-05 05:34:41

标签: python non-ascii-characters python-unicode non-unicode

我有一个字段从数据库中获取,其中包含此部分的字符串é©n得到这个我得到错误:

  

“UnicodeEncodeError:'ascii'编解码器无法编码位置12-15中的字符:序数不在范围内(128)”

我已经搜索了这个错误,而其他人因为开始类似u'\xa0等问题的unicodes而遇到了问题。但在我的情况下,我认为是由于特殊字符。我无法对数据库进行更改,因为它不在我的访问范围内。我可以访问它。

代码在这里:(实际上是对外部网址的调用)

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'])+"', "

2 个答案:

答案 0 :(得分:3)

在将数据插入数据库之前,您需要找到用于数据的编码。我们假设它是UTF-8,因为那是最常见的。

在这种情况下,您需要UTF-8解码而不是ascii解码。你没有提供任何代码,所以我假设你有"data".decode()。尝试使用"data".decode("utf-8"),如果您的数据是使用此编码进行编码的,则可以使用。

答案 1 :(得分:1)

所以听起来像字符串已经是unicode了。因此,请删除该行上的str()unicode函数。