我正在尝试用python结构创建一个unicode字符串。我不想使用python的默认字符串转换方法,因为我希望这个unicode字符串在特定的结构中,以便我可以在javascript客户端中使用它。我在行
处获得了UnicodeDecodeErrordlist_str += unicode(item[key])
我试过
# -*- encoding: utf-8 -*-
位于文件顶部。我也用
尝试了问题dlist_str += item[key]
希望str类型自动转换为unicode。我做错了什么?
以下是代码段:
def convertToString(dlist):
dlist_str = u'{ '
for item in dlist:
dlist_str += item['field_id'] + u': { '
for key in item:
dlist_str += key + u': '
dt = str(type(item[key]))
if dt == "<type 'str'>" or dt == "<type 'unicode'>":
dlist_str += u"'"
dlist_str += unicode(item[key])
dlist_str += u"'"
elif dt == "<type 'list'>":
dlist_str += u"["
for dn in item[key]:
dlist_str += u"'" + dn + u"',"
dlist_str += u"]"
else:
dlist_str += unicode(item[key])
dlist_str += u','
dlist_str += u'},'
dlist_str += u'}'
return dlist_str
答案 0 :(得分:3)
看起来你正在尝试一次做两件事:将列表转换为字典,然后JSON对其进行编码。
如果将这两个步骤分开,则应该能够使用JSON Encoder in the Python Standard Library:
import json
def convertToString(dlist):
temp_dict = dict((item['field_id'], item) for item in dlist)
return json.dumps(temp_dict)
# or, even shorter, and in Python 2.7/3.2+
# return json.dumps({item['field_id']: item for item in dlist})
另外,您在版本中看到错误的原因是您需要明确选择“from”编码而不是让Python猜测。类似的东西:
dlist_str += item[key].decode('utf-8')
可能会奏效。