我在词典下面的键“动词”字符串中包含非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字符的客户端字典?
答案 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。