博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python笔记6-%u60A0和\u60a0类似unicode解码
阅读量:4970 次
发布时间:2019-06-12

本文共 1318 字,大约阅读时间需要 4 分钟。

前言

有时候从接口的返回值里面获取到的是类似"%u4E0A%u6D77%u60A0%u60A0"这种格式的编码,不是python里面的unicode编码。

python里面的unicode编码应该是这种格式:\u4e0a\u6d77\u60a0\u60a0

unicode编码-python2

1.先看下python的unicode编码:\u60a0,这个是\u开头的,里面的英文是小写

# coding:utf-8# 前面加u可以直接打印中文a = u"\u4e0a\u6d77\u60a0\u60a0"print(a)# 字符串需decode成默认unicode编码b = r"\u4e0a\u6d77\u60a0\u60a0"print(b.decode("unicode_escape"))

2.如果在字符串前面加个u,意思是转化成unicode编码,如果获取到的是应该字符串原型,那就需要decode解码成unicode编码,python里面默认的unicode编码名称是unicode_escape

替换%-python2

1.如果是这种带%的编码,先替换成,这样就是unicode编码了,虽然里面的英文字符是大小,还好这里不区分大小写。

# coding:utf-8c = "%u4E0A%u6D77%u60A0%u60A0"# 解决办法一:替换%d = c.replace("%", "\\")print(d.decode('unicode_escape'))

解决办法二:unichr

1.先切割成单个字符,再用unichr转换成中文,再连成字符串,这个有点复杂了

# coding:utf-8def switch_to_ch(f):    '''转换成中文'''    g = f.split("%u")[1:]    h = [''+unichr(int(i, 16)) for i in g]    return "".join(h)if __name__ == "__main__":    f = "%u4e0a%u6d77%u60a0%u60a0"    ch = switch_to_ch(f)    print(ch)

python3解码

1.python3默认的编码就是unicode,这个跟python2还不太一样,如果直接给字符串decode会报错:AttributeError: 'str' object has no attribute 'ecode'

1070438-20171218213752162-2104026870.png

2.python3先encode成utf-8编码,再decode成默认的unicode就可以了

1070438-20171218213839787-1844220698.png

3.代码参考

# coding:utf-8c = "%u4E0A%u6D77%u60A0%u60A0"# python3解决办法:替换%d = c.replace("%", "\\")print(d.encode("utf-8").decode("unicode_escape"))

python自动化交流 QQ群:779429633

转载于:https://www.cnblogs.com/yoyoketang/p/8058873.html

你可能感兴趣的文章
python AES CBC模式加密
查看>>
Spring web flow的意义
查看>>
python面向对象编程基本规则
查看>>
Yii 2.x html 代码压缩
查看>>
文本编辑器激活系列(二):UltraEdit安装、激活、汉化教程
查看>>
安装redhat6.5虚拟机、做快照
查看>>
C#使用SqlServer
查看>>
分牛问题
查看>>
Ubuntu+IntelliJ IDEA+Android 配置NDK环境+openCV
查看>>
oozie bundle学习笔记
查看>>
会报编译器警告的Xcode 6.3新特性:Nullability Annotations
查看>>
Django 二
查看>>
Spring框架学习(三):Spring容器
查看>>
node安装包
查看>>
IOS crash分析
查看>>
java基础笔记(8)----接口
查看>>
前端和后端的区别和分工
查看>>
uva 10304
查看>>
bzoj2729 [HNOI2012]排队
查看>>
python 图像处理
查看>>