我有一个要从数据库获取的字段,其中包含带有此部分的字符串,在获取此字段时出现错误:

“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 该行上的函数。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top