我有一个python脚本,用于查询带有一组信息的服务器。
我需要将其放入php网站使用的数据库中。然而,有一个特定的字段,我返回description
字段,这是用户输入,在某些情况下使用几个ASCII字符,但在我将它放入数据库之前,我必须将其转换为utf-8 。它没问题,但它给我留下了一个问题,因为它返回一个带有u'
字符的JSON数组,这使得它不可读
我正在对输入执行以下操作:
unicode(status.description).encode('utf8')
返回以下字符串
{u'text': u'', u'extra': [{u'color': u'white', u'text': u' '}, {u'color': u'dark_gray', u'text': u'\xbb '}, {u'color': u'gold', u'text': u'Velocity', u'bold': True}, {u'color': u'red', u'text': u'MC ', u'bold': True}, {u'color': u'dark_gray', u'text': u'\xab\n'}, {u'color': u'white', u'text': u' '}, {u'color': u'gray', u'text': u'\u25b6 '}, {u'color': u'yellow', u'text': u'HCF SOTW ', u'bold': True}, {u'color': u'red', u'text': u'8/28 ', u'italic': True}, {u'color': u'gold', u'text': u'3PM EST ', u'italic': True}, {u'color': u'gray', u'text': u'\u25c0'}]}
虽然我需要这样的东西:
{"extra":[{"text":" ","color":"white"},{"text":"» ","color":"dark_gray"},{"text":"Velocity","color":"gold","bold":true},{"text":"MC ","color":"red","bold":true},{"text":"«\n","color":"dark_gray"},{"text":" ","color":"white"},{"text":"▶ ","color":"gray"},{"text":"2.0 ","color":"red","bold":true},{"text":"OPFACTIONS HAS BEEN RELEASED ","color":"yellow","bold":true},{"text":"◀","color":"gray"}],"text":""}
作为一个不熟悉python的人,我不知道如何解决这个问题,我尝试了几种不同的编码方式,就像希望它会变得不同
status.description.encode('utf8')
unicode(status.description).encode('utf8')
status.description.encode('utf-8')
unicode(status.description).encode('utf-8')
还有一些使用ASCII,但到目前为止还没有骰子。
有没有办法可以在我将它放入数据库之前从列表中删除此u
但仍然使用utf8编码? (或者如果可能的话,通过php)
答案 0 :(得分:2)
如果status.description
返回了一个字典并且您希望它是JSON,则应该在其上调用json.dumps()
,而不是unicode()
。
但是,dict中存在u
个字符不是一个问题,无需修复。
答案 1 :(得分:0)
print(some_dict)
打印dict对象的字符串表示形式。您需要将dict对象转换为JSON。
import json
print(json.dumps(some_dict))