1

データが非 ASCII (中国語、日本語の文字) である可能性がある POST 要求を行う必要があります。入力を 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)

ただし、ログに次のエラーが表示され続けます。

TypeError: Unicode のデコードはサポートされていません

4

2 に答える 2

7

Unicode は既に Unicode であるため、デコードできません。

代わりにこれを試してください:

if isinstance(var, str):
    var = unicode(var, 'utf-8')
else:
    var = unicode(var)
于 2010-12-22T13:35:41.293 に答える
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')

これは、上記の 2 行に相当します。

Unicode に関する混乱を軽減するには、http: //www.joelonsoftware.com/articles/Unicode.htmlをお読みください。

于 2010-12-22T14:37:00.247 に答える