当前位置: 首页 > 工具软件 > a2u > 使用案例 >

Python输出\u编码将其转换成中文

高和通
2023-12-01

string格式,举例:

str = '\u897f'
print str.decode("unicode-escape")

结果:西

但如果是list格式,则不适用

例如:

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等编码。

 类似资料: