这可能是一个非常简单的问题,但我无法解决它。
在我的python控制台中,我做了:
request.request.data.get('comment')
我得到{u'price': u'21', u'unit': u'30\xd730', u'name': u'test', u'comments': u'check'}
评论的价值最初是:
"comments" : "check",
"name" : "test",
"price" : "21",
"unit" : "30×30"(multiplication sign x)
如何解决此问题,以便request.request.data.get('comment')
为{u'price': u'21', u'unit': u'30x30', u'name': u'test', u'comments': u'check'}
?
我尝试使用:
request.request.data.get('comment').get('unit').encode('utf-8')
但它会返回'30\xc3\x9730'
我想将/xd
转换为ascii。
答案 0 :(得分:1)
这似乎是方法
中的一个功能(错误?)dict.__repr__()
和/或
dict.__str__()
Python 2.7.x的真的一切都好。您可以通过
进行检查print a[u'unit']
打印
30x30
P.S。 Python 3.5.2中没有问题......
参见下面的unicode Pycharm控制台中Python 2.7的交互式会话:
Python 2.7.12 (v2.7.12:d33e0cf91556, Jun 27 2016, 15:19:22) [MSC v.1500 32 bit (Intel)] on win32
>>> a=u'\xd7'
>>> a
u'\xd7'
>>> print a
×
答案 1 :(得分:0)
U'东西'只是在列表或字典或元组中显示unicode字符串的python方式。
如果您将值打印到字符串本身(print request.request.data.get('comment').get('unit')
),则会获得实际字符。
除非您的终端不支持它(或者如果python认为如此)。 您可以尝试使用编解码器模块强制执行特定编码:
sys.stdout=codecs.getwriter('utf-8')(sys.stdout)