str = '\u897f'
print str.decode("unicode-escape")
结果:西
例如:
list = [u'\u897f']
print str(list).decode("unicode-escape")
结果:['\u897f']
需要改为:
list = [u'\u897f']
s = str(list).replace('u\'','\'')
print s.decode("unicode-escape")
结果:['西‘]
list赋值的时候,
#!/usr/bin/python
# -*- coding=utf-8 -*-
import sys
reload(sys)
sys.setdefaultencoding("utf-8")
l = []
s0 = '西0'
s1 = u'西1'
s2 = '\u897f2'
s3 = u'\u897f2'
l.append(s0.decode("unicode-escape"))
l.append(s1.decode("unicode-escape"))
l.append(s2.decode("unicode-escape"))
l.append(s3.decode("unicode-escape"))
print '有转码:{}'.format(str(l).replace('u\'','\'').decode("unicode-escape"))
print '不替换:{}'.format(str(l).decode("unicode-escape"))
l0 = []
l0.append(s0)
l0.append(s1)
l0.append(s2)
l0.append(s3)
print '无转码:{}'.format(str(l0).replace('u\'','\'').decode("unicode-escape"))
print '不替换:{}'.format(str(l0).decode("unicode-escape"))
l0 = []
l0.append(s0.encode('utf_8'))
l0.append(s1.encode('utf_8'))
l0.append(s2.encode('utf_8'))
l0.append(s3.encode('utf_8'))
print '无转码:{}'.format(str(l0).replace('u\'','\'').decode("unicode-escape"))
print '不替换:{}'.format(str(l0).decode("unicode-escape"))
l0 = []
l0.append(s0.decode('utf_8'))
l0.append(s1.decode('utf_8'))
l0.append(s2.decode('utf_8'))
l0.append(s3.decode('utf_8'))
print '无转码:{}'.format(str(l0).replace('u\'','\'').decode("unicode-escape"))
print '不替换:{}'.format(str(l0).decode("unicode-escape"))
结果:
有转码:['西0', '西1', '西2', '西2']
不替换:[u'西0', u'西1', u'西2', u'西2']
无转码:['西0', '西1', '\u897f2', '西2']
不替换:['西0', u'西1', '\u897f2', u'西2']
无转码:['西0', '西1', '\u897f2', '西2']
不替换:['西0', '西1', '\u897f2', '西2']
无转码:['西0', '西1', '\u897f2', '西2']
不替换:[u'西0', u'西1', u'\u897f2', u'西2']
【python3】
- 文件默认编码是utf-8 , 字符串编码是 unicode
- 以utf-8 或者 gbk等编码的代码,加载到内存,会自动转为unicode正常显示。
【python2】
- 文件默认编码是ascii , 字符串编码也是 ascii , 如果文件头声明了是gbk,那字符串编码就是gbk。
- 以utf-8 或者 gbk等编码的代码,加载到内存,并不会转为unicode,编码仍然是utf-8或者gbk等编码。