编码字符串时出错

时间:2016-10-26 09:09:24

标签: python string python-2.7 encoding

这可能是一个非常简单的问题,但我无法解决它。

在我的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。

2 个答案:

答案 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)