可能会有不局限于Python语言的内容,文中“>>>”表示结果,而不是命令行交互的提示符

1.关于字符串编码

ASCII编码 占用一个字节 二进制11111111=十进制255 所以可以编码所有的字母和数字,比如大写字母A的编码是65,小写字母z的编码是122。但是由于各国语言自成一脉,难免冲突,一起出现会出现乱码。

Unicode编码应运而生,编译所有语言。通常占用两个字节,生僻汉字需4需4个字节,字母数字编码补0,缺点是储存空间变大,若都是英文字母,不划算。

UTF-8 可变长度编码集二者之长,把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节。

计算机内存统一使用Unicode编码,存储和传输则使用UTF-8编码。

Python的字符串类型是str,内存中以Unicode存储,如果要在网络上传输,或保存在磁盘上,就要把str变为以字节为单位的bytes(编码)。

而从网络或磁盘上读取时,就要把bytes字节转换为str(解码)。对应的方法分别是encode()和decode()

解码的时候,如果包含无法解码的字节就会报错:

 print(b'\xe4\xb8\xad'.decode('utf-8'))
>>> 中
print(b'\xe4\xb8\xad\xff'.decode('utf-8'))
>>>

  Traceback (most recent call last):
  ...
  UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 3: invalid start byte

如果只有一小部分无效的字节,可以传入errors='ignore'忽略错误的字节:

 print(b'\xe4\xb8\xad\xff'.decode('utf-8', errors='ignore'))
>>> 中

当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头写上这两行:

 #!/usr/bin/env python3
# -*- coding: utf- -*-

第一行注释是为了告诉Linux/OS X系统,这是一个Python可执行程序,Windows系统会忽略这个注释;

第二行注释是为了告诉Python解释器,按照UTF-8编码读取源代码,否则,你在源代码中写的中文输出可能会有乱码。

PS. 字符串的占位符‘%s’,会把任何数据类型转换为字符串。也可以用具体的数据类型的占位符如%d表示整数,%f表示浮点数,%x表示十六进制整数 而%需要%转义,通常‘%%’表示‘%’

2.Python的复杂数据类型之 list,tuple,dict,set

python小知识点随笔的更多相关文章

  1. python小知识点总结

    小知识点总结 1.python2和python3的区别   python2 python3 默认编码 ascii utf-8 input() raw_input() input() print 可以不 ...

  2. Python小知识点(3)--装饰器

    (1)装饰器含参数,被装饰函数不含(含)参数 实例代码如下: import time # 装饰器函数 def wrapper(func): def done(*args,**kwargs): star ...

  3. python小知识点

    问题:求列表中每个元素的元素次方之和>>> a=[1,2,3,4]>>> k=len(a)第一种解法#    s=0#    for x in a:#        ...

  4. Python小知识点(5)--面向对象部分

    面向对象: 世间万物,皆可分类.--------------------手机<--------------某一个分类 世间万物,皆为对象.--------------------我的手机< ...

  5. Python 小知识点(7)--类的创建方式

    1. 创建类的第1方式(常用) class Foo(object): def func(self): print("Hello Foo") 2.创建类的第2方式 def func( ...

  6. Python小知识点(4)--模块相关

    1.模块: 定义:用来从逻辑上组织python代码(变量,函数,类,逻辑:实现一个功能),本质就是以.py结尾的python文件(文件名:test.py,对应的模块名:test). 包:用来从逻辑上组 ...

  7. Python小知识点(2)

    1.简述Python的运行过程 在说这个问题之前,我们先来说两个概念,PyCodeObject和pyc文件. 我们在硬盘上看到的pyc自然不必多说,而其实PyCodeObject则是Python编译器 ...

  8. Python 小知识点(1)

    1.Python命名规则------>下划线连接    girl_of_wfb="lgl" 2.常量-----名称全大写->WFB="WFaceBoss&qu ...

  9. Python小知识点+保留字

    注意 !/usr/bin/python # -- coding: UTF-8 -- #中文编码 Python空行:函数之间或类的方法之间用空行分隔,表示一段新的代码的开始 Python注释:单行注释采 ...

随机推荐

  1. node.js官方文档解析 02—buffer 缓冲器

    Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的.且在 V8 堆外分配物理内存.Buffer 的大小在被创建时确定,且无法调整. Buffer 类在 Node.js 中是一个全局 ...

  2. Java虚拟机-对象的创建和访问

    一.对象的创建: 创建对象在java上面是很简单的,使用new关键字就可以了,但是其实在虚拟机中,java对象的创建是一个复杂的过程. 当java虚拟机遇到一个new的指令的时候,对象创建的程序正式启 ...

  3. webpack之带有可自动打开浏览器及热重载的基本配置

    什么是Webpack WebPack可以看做是模块打包机:它做的事情是,分析你的项目结构,找到JavaScript模块以及其它的一些浏览器不能直接运行的拓展语言(Scss,TypeScript等),并 ...

  4. Java读取文本文件中文乱码问题

    最近遇到一个问题,Java读取文本文件(例如csv文件.txt文件等),遇到中文就变成乱码.读取代码如下: List<String> lines=new ArrayList<Stri ...

  5. mysql字符集校对

    常用的两种 utf8_general_ci 按照普通的字母顺序,而且不区分大小写(比如:a B c D)utf8_bin 按照二进制排序(比如:A排在a前面,B D a c) ci是 case ins ...

  6. RegExp正则3

    1.正则:检索字符串的一条规则. 2.正则就是由元字符和修饰符构成的 3.写在//里面的都叫元字符,与元字符两种    一种是有特殊意义,一种没有特殊意义,没有特殊意义的就是字符本身. 特殊意思的元字 ...

  7. 切换controller 后面的最好不要用id参数,不然会根据路由规则改变

    //切换actionResult             return RedirectToAction("Edit", "EngineeringCase",  ...

  8. python mysql 单表查询 多表查询

    一.外键 变种: 三种关系: 多对一 站在左表的角度: (1)一个员工 能不能在 多个部门? 不成立 (2)多个员工 能不能在 一个部门? 成立 只要有一个条件成立:多 对 一或者是1对多 如果两个条 ...

  9. 使用Eclipse+jlink调试STM32

    使用Eclipse+JLINK调试STM32 安装eclipse + CDT. 安装交叉编译工具(工具链ARM CROSS GCC--GUN ARM http://gnuarmeclipse.sour ...

  10. eclipese pyDEV安装----可以直接运行python文件

    重点: 1.Eclipse中手动安装pydev插件 2.开始写代码 1.下载匹配eclipse的pyDev版本: https://sourceforge.net/projects/pydev/file ...