UnicodeEncodeError: 'ascii' 编码无法因数据库中的 één 编码字符
我有一个字段需要从数据库中获取,里面包含了像这样的一部分字符串:één。在获取这个字符串的时候,我遇到了一个错误:
"UnicodeEncodeError: 'ascii' codec can't encode characters in position 12-15: ordinal not in range(128)"
我查了一下这个错误,发现其他人遇到类似问题是因为有一些Unicode字符,比如以u'\xa0
开头的字符等等。但在我的情况下,我觉得是因为特殊字符导致的。我无法对数据库进行修改,因为我没有权限,只能访问它。
这里是代码:(实际上是调用一个外部网址)
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 个回答
1
听起来这个字符串本来就是unicode格式的。所以在那一行去掉 str()
和 unicode
这两个函数吧。
3
在把数据放进数据库之前,你需要知道这些数据是用什么编码方式的。我们假设使用的是UTF-8,因为这是最常见的一种编码方式。
如果是这样的话,你应该用UTF-8解码,而不是用ASCII解码。你没有提供代码,所以我猜你可能有 "data".decode()
这样的写法。试试 "data".decode("utf-8")
,如果你的数据确实是用这种编码方式的话,这样就能正常工作了。