博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python中的编码和解码问题
阅读量:5447 次
发布时间:2019-06-15

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

关于Python中遇到的中文字符串的读取和输入时总是遇到一堆问题,到现在还不是特别明白,只是有了一个大概率的理解,就是:字符串是用什么编码格式编码的,就用什么编码格式来解码。

encode()对字符串st进行编码,按照制定的编码格式编码。编码后为字节流,bytes。编码是从中间编码格式Unicode来向其他编码格式来映射的,而Unicode的表示就是字符串str。可以直接对字符串编码。

>>>a='你好'>>>ae=a.encode('utf-8')>>>aeb'\xe4\xbd\xa0\xe5\xa5\xbd'>>>type(ae)bytes

decode()对编码后的字节流进行解码,按照编码的格式进行解码,解码为中间格式Unicode,并且由str类型进行表示。比如上面的例子,下面解码必须要以编码相同的格式解码‘utf-8’,否则会报错。

>>>au=ae.decode('utf-8')>>>au'你好'>>>ae.decode('gbk') '浣犲ソ'

如果用str的字符串来解码会出现错误,因为str字符串表示的是Unicode,Python本身默认的编码格式就是Unicode,所以str可以编码

>>>a.decode('utf-8')Traceback (most recent call last):  File "G:\softs\Anaconda\lib\site-packages\IPython\core\interactiveshell.py", line 2963, in run_code    exec(code_obj, self.user_global_ns, self.user_ns)  File "
", line 1, in
a.decode('utf-8')AttributeError: 'str' object has no attribute 'decode'

下面推荐介个看的链接:

1.

2.

 

当遇到显示为'\u534e\u4e3a\u624b\u673a\uff0c\u597d'的字符串时,表明这个字符串已经是Unicode编码的格式了,所以可以直接先编码为一个格式,再解码,就可以看到能看得懂的中文字符串了

>>>s1='\u534e\u4e3a\u624b\u673a\uff0c\u597d\u7528\u4e0d\u8d35\uff0c\u5988\u5988\u518d\u4e5f\u4e0d\u7528\u62c5\u5fc3\u6211\u53d8\u6210\u6708\u5149\u65cf\u4e86~'>>>s1.encode('utf-8').decode('utf-8')'华为手机,好用不贵,妈妈再也不用担心我变成月光族了~'>>>type(s1) str

  

转载于:https://www.cnblogs.com/zz22--/p/9556755.html

你可能感兴趣的文章
Python:tesserocr 在 windows 下的安装及简单使用
查看>>
周周总结——时时更新(第4学期,第4周)
查看>>
在ubuntu12.04,64位中安装lnmp一键包mysql的问题
查看>>
一级关联数组转化成多层子级数组
查看>>
百度Ueditor编辑器的Html模式自动替换样式的解决方法
查看>>
八:Razor(MVC框架视图引擎)
查看>>
java代码编辑器 pdf文件预览 主流SSM 代码生成器 shrio redis websocket即时通讯
查看>>
final
查看>>
Win8下更改Chrome缓存目录
查看>>
django框架小技巧
查看>>
(八)8-3多线程共享变量
查看>>
Parameter配置文件获取
查看>>
[Operating System] {ud923} P3L1: Scheduling
查看>>
(转载)悟透JavaScript
查看>>
java后端发送http请求使用RestTemplate
查看>>
PAT1002
查看>>
避免商品超卖的4种方案
查看>>
AtCoder - 1999 Candy Piles
查看>>
python中calendar模块的常用方法
查看>>
Checklist: 2019 05.01 ~ 06.30
查看>>