我正在使用google appengine python 2.5。
我在以下代码中遇到unicodedecoderror错误,因为myuser名称具有以下值
userName = unicode(userName).encode('utf-8') # äºï¼égãwmj is value in this variable
userName = unicode(userName).encode('utf-8')
strData = '{\"Sid\" :1, \"Oppid\" :%s, \"Aid\" :%s, \"EC\" :\"%s\", \"Name\" :\%s"' % (enemyID, userID, userEmpCode,userName)
params = {'deviceToken' : oDeviceToken,
'message' : strMessage,
'CertificateId' : certificateId,
'Data' : strData
}
result = urlfetch.fetch(url = url,
payload = urllib.urlencode(params),
method = urlfetch.POST,
headers = {"Authorization" : authString},
deadline = 30
)
我正在对username执行以下步骤,将其编码为utf-8,以便我可以将其作为有效负载发送。
username = unicode(username).encode(utf-8)
我相信这个错误是在调用urllib.urlencode(params)
时发生的
请指导一下哪里出了问题..或者你可以..。
在appengine python上处理unicode字符串的终极策略是什么?
我尝试了不同的解决方案来阅读不同的主题..但还是不起作用
发布于 2012-07-07 19:21:10
您的问题似乎是,您在调用unicode(userName)
时没有对已编码的字符串进行编码,因此它“默认使用当前的默认字符串编码”,在您的示例中似乎是ascii
。
您可能在任何情况下都不应该调用unicode
,如果您知道它是Unicode值,那么您已经很好了,如果不是,请使用正确的编码调用.decode
。
如果您不确定,请使用isinstance
进行测试,因为尝试解码Unicode值将导致另一个错误。
发布于 2016-03-30 16:34:05
在将Python3代码从Ubuntu Linux14.04移植到FreeBSD 10.3时,我遇到了类似的问题。当使用Python 3.4.4打开文件时,后者似乎默认使用ASCII而不是UTF-8。
使用文件open
命令指定encoding='utf-8'
解决了我的问题:
open('filepath', encoding='utf-8')
https://stackoverflow.com/questions/11377806
复制相似问题