编码字符串时出错

2024-09-29 17:23:54 发布

您现在位置:Python中文网/ 问答频道 /正文

这可能是一个非常简单的问题,但我只是不能解决它。你知道吗

在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。你知道吗


Tags: nametestdatagetrequestcheckcommentunit
2条回答

u'something'只是python在列表、dict或元组中显示unicode字符串的方法。你知道吗

如果将值打印到字符串本身(print request.request.data.get('comment').get('unit')),则得到实际的字符。你知道吗

除非您的终端不支持它(或者python这么认为)。 您可以尝试使用编解码器模块强制进行特定编码:

sys.stdout=codecs.getwriter('utf-8')(sys.stdout)

这似乎是一个功能(bug?)在方法上

dict.__repr__() 

和/或

dict.__str__() 

真的一切都好。你可以通过

print a[u'unit']

哪个指纹

30x30

注意:在python3.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
×

相关问题 更多 >

    热门问题