python2.7的编码问题

初学python,版本是2.7

>>> text1 = u'\u4e2d'
>>> print text1
中

在字符串的前面加个 u 就表示是Unicode编码,但是如果我接受到的就是'\u4e2d'如下:

>>> text2 = '\u4e2d'

我怎么能 text2的编码转出成Unicode?

阅读 5.2k
3 个回答

print '\u4e2d'.decode('unicode_escape')

我很负责任的告诉你....It's impossible!
为什么呢...

这要从python2.7的编码规则说起来了..

python字符串默认是str的..可以理解为ascii的或者python3里面的bytes类型的
当使用unicode("....")或者u"..."的时候才是unicode的
如果你: a = "\u4e2d"的话...他默认的是6个字符的ascii字符串...len(a) = 6的.所以他是ascii码的英文字符
如果你采用unicode(a)的方法转换成ascii的话..只是将6个字符转换成了unicode编码..而英文字符的ascii编码和utf-8的是一样的.等于没有转..
并且你会发现...a的'\'被转义了成'\\'了...
如果你a.decode('utf-8')的话.等于和unicode()做了一件事情

具体的请去谷歌一下有关python编码的知识吧...python的编码是蛮搞的..搞懂了请写个博客..我去学习下.我也没搞很明白~

发一个dirty hack的

text = u'\u4e2d'
print eval('u"%s"' % text)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进