Google App Engine上的Python中的Unicode

1 投票
2 回答
4541 浏览
提问于 2025-04-16 08:54

我需要发送一个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)

撰写回答