- >>> print '--%s--' % ss
- --涓?-
- >>> s = '\u4e25'
- >>> s
- '\\u4e25'
- >>> us = s.decode('unicode_escape')
- >>> us
- u'\u4e25'
十六进制格局的字符串
有时刻,也会看到类似如许的str,’\xd1\xcf’, 看起来也很熟悉,跟汉字“严”的gbk编码’xd1xcf’很像,差别在于前者多了一个‘’, 如许就无法解释成一个十六进制了。解决办法是python-specific-encodings中的string_escape
- >>> s='\\xd1\\xcf'
- >>> s
- '\\xd1\\xcf'
- >>> print s
- \xd1\xcf
- >>> news = s.decode('string_escape')
- >>> news
- '\xd1\xcf'
- >>> print news
- 严
给读者的一个问题
在这里留下一?问题:
- u'严' == '严'
返回值是True 照样 False呢?当然这里有意省去了高低文情况,不过明白的说,在不合的编码情况下,谜底是不一样的,原因都在上文中!
总结与建议
不管怎么样解释,python2.x中的字符编码照样一件让人头疼的工作,即使搞懂了,之后碰到了也可能忘记。对于这个问题,诸多建议如下:
我们项目组一值应用Python2.7,固然我们也知道Python3的诸多好处,也曾经擦掌磨拳过,但因为各类汗青原因,以及营业的压力,我们只可能持续应用Python2.7。更悲哀的是,我们组不是那么international,所以代码中照样涉及到大年夜量的中文,是以有时也会碰到乱码以及UnicodeError,于是生活在了小看链的末尾。
第一:应用python3,就不消再纠结str于unicode了;然则这个很难开辟者说了算;
第三:对于中文字符串,不要用str表示,而是用unicode表示;实际中也不好实施,大年夜家都不肯意多写一个u
- import sys
- reload(sys)
- sys.setdefaultencoding('utf-8')
第四:只在传输,或者持久化的时刻对unicode进行encode,相反的过程时decode
- >>> a = '严'
- >>> b = u'严'
- >>> c = a + b
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- UnicodeDecodeError: 'ascii' codec can't decode byte 0xd1
推荐阅读
能拍照,还能视频通话?coolpad Dynobot儿童智能手表让你惊艳
市面上的绝大部分儿童手表都不能拍照,最大卖点的只是语音通话功能。Dynobot是市面上仅有的配备两个摄像头的儿童手表,支持480P视频通话。表盘30万像素满足孩子自拍需求,顶部200万像素摄像头可以拍孩子看到的任何画>>>详细阅读
本文标题:不想再被鄙视?那就看进来! 一文搞懂Python 2字符编码
地址:http://www.17bianji.com/lsqh/39888.html
1/2 1

网友点评
精彩导读
科技快报
品牌展示