Unicode 编码错误:由于数据库中的 én,“ascii”编解码器无法对字符进行编码
-
21-12-2019 - |
题
我有一个要从数据库获取的字段,其中包含带有此部分的字符串,在获取此字段时出现错误:
“Unicode编码错误:“ascii”编解码器无法对位置 12-15 中的字符进行编码:序数不在范围内(128)"
我搜索过这个错误,其他人也遇到了由于 unicodes 引起的问题 u'\xa0
, , ETC。但就我而言,我认为这是由于特殊字符造成的。我无法对数据库进行更改,因为它不在我的访问范围内。我可以直接访问它。
代码在这里:(实际上是对外部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()
和 unicode
该行上的函数。
不隶属于 StackOverflow