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

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

>>>a='你好'
>>>ae=a.encode('utf-8')
>>>ae
b'\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 "<ipython-input-68-fe89aebaa52b>", line 1, in <module>
a.decode('utf-8')
AttributeError: 'str' object has no attribute 'decode'

下面推荐介个看的链接:

1.python3大作战之encode与decode讲解

2.python中的encode()和decode()函数

当遇到显示为'\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

  

Python中的编码和解码问题的更多相关文章

  1. python中的编码与解码

      编码与解码 首先,明确一点,计算机中存储的信息都是二进制的   编码/解码本质上是一种映射(对应关系),比如‘a’用ascii编码则是65,计算机中存储的就是00110101,但是显示的时候不能显 ...

  2. python中的编码和解码

    计算机中常见的编码方式有多种,英文一般是ascii编码,其他有unicode,utf-8,gbk,utf-16等编码. 常见编码方式: ASCII编码:ASCII是早期的编码,包含英文字母.数字和 ...

  3. Python中的编码与解码(转)

    Python中的字符编码与解码困扰了我很久了,一直没有认真整理过,这次下静下心来整理了一下我对方面知识的理解. 文章中对有些知识没有做深入的探讨,一是我自己也没有去深入的了解,例如各种编码方案的实现方 ...

  4. python中base64编码与解码

    在python3中用base64进行编码和解码的时候特别注意: 题目要求: 准备一张.jpg图片,比如:mm.jpg,读取图片数据并通过b85encode加密之后写入到新文件mm.txt文件中,然后读 ...

  5. Python 中 base64 编码与解码

    base64 是经常使用的一种加密方式,在 Python 中有专门的库支持. 本文主要介绍在 Python2 和 Python3 中的使用区别: 在 Python2 环境: Python 2.7.16 ...

  6. python中的编码问题:以ascii和unicode为主线

      1.unicode.gbk.gb2312.utf-8的关系 http://www.pythonclub.org/python-basic/encode-detail 这篇文章写的比较好,utf-8 ...

  7. 【转】【Python】 python中的编码问题报错 'ascii' codec can't decode 及 URL地址获取中文

    1.unicode.gbk.gb2312.utf-8的关系 http://www.pythonclub.org/python-basic/encode-detail 这篇文章写的比较好,utf-8是u ...

  8. python基础系列教程——Python中的编码问题,中文乱码问题

    python基础系列教程——Python中的编码问题,中文乱码问题 如果不声明编码,则中文会报错,即使是注释也会报错. # -*- coding: UTF-8 -*- 或者 #coding=utf-8 ...

  9. 转 python3中SQLLIT编码与解码之Unicode与bytes

    #########sample########## sqlite3.OperationalError: Could not decode to UTF-8 column 'logtype' with ...

随机推荐

  1. redhat 7安装CentOS 7 yum源

    http://www.bubuko.com/infodetail-2004218.html http://www.bubuko.com/infodetail-2004218.html ******** ...

  2. angular 中怎么获取路径上的参数 参考:https://docs.angularjs.org/api/ng/service/$location

    参考: https://docs.angularjs.org/api/ng/service/$location

  3. django 使用 可视化包-Pyechart

    Echarts 是百度开源的一个数据可视化 JS 库,主要用于数据可视化.pyecharts 是一个用于生成 Echarts 图表的类库.实际上就是 Echarts 与 Python 的对接. 本次使 ...

  4. Delphi 浏览器WebBrowser

    WebBrowser1.Navigate(URL); while WebBrowser1.busy do Application.ProcessMessages; while WebBrowser1. ...

  5. Datetime 24小时制

    24小时制: DateTime dt = DateTime.Now; string dt24 = dt.ToString("yyyy-MM-dd HH:mm:ss"); 12小时制 ...

  6. How to Pronounce the Word SOMETHING

    How to Pronounce the Word SOMETHING Share Tweet Share Something tells me you’re going to like this v ...

  7. vps hiformance 设置备忘

    ssr一键安装脚本 wget -N --no-check-certificate https://raw.githubusercontent.com/ToyoDAdoubi/doubi/master/ ...

  8. python的读写和写读操作

    # 读写操作 (读写操作是正常的)f = open('log',mode='r+',encoding='utf-8') # log是文件名 print(f.read()) f.write(" ...

  9. linux一些基本常识(三)

    acl:对本身权限的扩展    打包:zip 111.zip a.txt b.txt.....    zip -r /etc/sysconfig/* (样才能第归所有内容0)    解宝:uzip 1 ...

  10. mysql 数值与字符类型 长度梳理

    上述表格中的数值类型都是定长的,也就是说,无论你存的数值是多少,多大或者多小,占用的存储字节大小都是固定的.例如,设置int(1),虽然M值是1个字符,但是它所占用的空间大小永远都是4个字节的大小,换 ...