1

非ASCII文字(utf-8)を含むキー「動詞」文字列の下に辞書があります。その辞書をクライアントに送信したい (私は Tornado i Python 2.7.2 と simplejson を使用しています)。私はのようにしようとしています

result = {"verb" : "Želeći"}
self.write(simplejson.dumps(result, ensure_ascii=False)) # tried also with utf-8 encoding parameter passed 
self.flush()

しかし、常にエラーが発生しますutf8 codec can't decode byte 0x8e in position 0

simplejson で utf 文字を含むクライアント辞書に送信する方法は?

4

2 に答える 2

0

UTF-8 でエンコードされていないデータがあります。

JSON 文字列は実際には Unicode 文字列ですが、代わりにバイト文字列を指定しています。jsonモジュールに誤ってデータをデコードさせるのではなく、最初に手動でデータをデコードします。

エラーコードから判断すると、代わりに windows-1252 (cp1252) でエンコードされたデータがあるため、次のように動作します。

result['verb'] = result['verb'].decode('cp1252')
simplejson.dumps(result, ensure_ascii=False).encode('UTF8')

Windows-1250 の可能性もあります。1250 と 1252 の両方で、Ž文字 (Unicode コードポイント U+017D、LATIN CAPITAL LETTER Z WITH CARON) が 16 進数の 8E にエンコードされます。

于 2013-08-01T12:56:50.453 に答える