如何使用simplejson发送包含utf字符的客户端字典?

时间:2013-08-01 12:31:52

标签: python python-2.7 tornado simplejson

我在词典下面的键“动词”字符串中包含非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编解码器无法解码位置0的字节0x8e

如何使用simplejson发送包含utf字符的客户端字典?

2 个答案:

答案 0 :(得分:0)

它对我有用:

>>> import simplejson
>>> result = {"verb" : "Želeći"}
>>> simplejson.dumps(result, ensure_ascii=False)
u'{"verb": "\u017dele\u0107i"}'

我正在使用python 2.7.4

答案 1 :(得分: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,带有CARON的LATIN CAPITAL LETTER Z)编码为十六进制8E。