Google App Engine上的Python中的Unicode
我需要发送一个POST请求,里面的数据可能包含非ASCII字符(比如中文、日文字符)。我需要把输入转换成unicode格式,然后用utf-8进行编码。以下是我实现的方法:
foo = unicode(self.request.get('foo'), 'utf-8') #convert to unicode
foo = foo.encode('utf-8') #encode with utf-8
data = {'foo': foo}
payload = urllib.urlencode(data)
但是,我的日志里一直出现这个错误:
类型错误:不支持解码Unicode
2 个回答
1
好的,来聊聊一些评论:
foo = unicode(self.request.get('foo'), 'utf-8') #convert to unicode
不要叫它“转换”。叫它“解码”,这样更清楚。
foo = foo.encode('utf-8') #encode with utf-8
但是为什么呢?你刚刚是从UTF8解码的,为什么又要编码回去呢?你其实可以这样做:
foo = self.request.get('foo')
这和上面那两行是等价的。
为了减少你对Unicode的困惑,可以看看这个链接:http://www.joelonsoftware.com/articles/Unicode.html
7
Unicode无法被解码,因为它本身就是Unicode格式。
可以试试这个方法:
if isinstance(var, str):
var = unicode(var, 'utf-8')
else:
var = unicode(var)