金角大王Alex  python 之路,致那些年,我们依然没搞明白的编码

python2与python3的区别

py2

str = bytes

为什么有bytes?

是因为要表示图片、视频等二进制格式的数据。

以 utf-8 编码的字符串,在windows上不能显示(Linux默认编码 utf-8 ,windows默认编码 gbk)

如何在python2里实现写一个软件,在全球各国的电脑上都能直接看?

以unicode编写你的软件      s = you_str.decode( ' utf-8 ' )

unicode类型

文件头

py2:以 utf-8 or gbk... 编码的代码,代码内容加载到内存,并不会被转成unicode,编码依然是 utf-8 or gbk...

py3:以 utf-8 or gbk... 编码的代码,代码内容加载到内存,会被自动转成unicode

py3

str = unicode

Python2和Python3编码总结

py2里有str,unicode,bytes,str和bytes基本一致,只有在图片、视频里是不一样的。  py2 str = py3 unicode

py2不支持中文,默认编码是ASCII,为使py2里编码的能在全球电脑上显示,于是就在py2里加了一个单独的类型,叫unicode,如果程序想在全球电脑里显示,那就要在内存里将编码转成unicode。

py3里,字符串默认编码unicode,文件默认编码 utf-8 ,将str和bytes做了明确的区分:str就是unicode格式的字符串,bytes就是单纯的二进制。

py3里不管打印什么字符都是unicode,py2里打印字符会打印成其对应的 utf-8 或 gbk。

unicode是为了存储和传输,传输是用二进制,存到硬盘里用的是 utf-8 或 gbk 。

py3里不要转编码,转编码是不可逆的,转不回来的!!!

Python只要出现各种编码问题,无非是哪里的编码设置错了。常见的编码错误的原因有:

(1)Python解释器的默认编码

(2)Python源文件文件编码

(3)Terminal使用的编码

(4)操作系统的语言设置

Python全栈之路----Python2与Python3的更多相关文章

  1. Python全栈之路----目录

    Module1 Python基本语法 Python全栈之路----编程基本情况介绍 Python全栈之路----常用数据类型--集合 Module2 数据类型.字符编码.文件操作 Python全栈之路 ...

  2. python 全栈之路

    目录 Python 全栈之路 一. Python 1. Python基础知识部分 2. Python -函数 3. Python - 模块 4. Python - 面对对象 5. Python - 文 ...

  3. Python全栈之路目录结构

    基础 1.Python全栈之路-----基础篇 2.Python全栈之路---运算符与基本的数据结构 3.Python全栈之路3--set集合--三元运算--深浅拷贝--初识函数 4.Python全栈 ...

  4. Python全栈之路----常用模块----hashlib加密模块

    加密算法介绍 HASH       Python全栈之路----hash函数 Hash,一般翻译做“散列”,也有直接音译为”哈希”的,就是把任意长度的输入(又叫做预映射,pre-image),通过散列 ...

  5. Python全栈之路-----基础篇

    Python诞生 Python是著名的”龟叔“Guido van Rossum(吉多·范罗苏姆)在1989年圣诞节期间,为了打发无聊的圣诞节而编写的一个编程语言. Python语法很多来自C,但又受到 ...

  6. Python全栈之路----函数----返回值

    函数外部的代码想要获取函数的执行结果,就可以在函数里用return语句,把结果返回. def stu_register(name,age,course='PY',country='CN'): prin ...

  7. Python全栈之路----常用模块----subprocess模块

    我们经常需要通过Python去执行一条系统命令或脚本,系统的shell命令是独立于你的python进程之外的,每执行一条命令,就是发起一个新进程,通过python调用系统命令或脚本的模块在python ...

  8. Python全栈之路----常用模块----包及跨模块导入

    当你的模块文件越来越多,就需要对模块文件进行划分,比如把负责跟数据库交互的都放一个文件夹,把与页面交互相互的放入一个文件夹. 像上面这样,一个文件夹管理多个模块文件,这个文件夹就被称为包. 那不同包之 ...

  9. Python全栈之路----常用模块----os模块

    os模块提供了很多允许你的程序和操作系统直接交互的功能 得到当前工作目录,即当前Python脚本工作的目录路径:os.getcwd() #test.py import os print(os.getc ...

随机推荐

  1. 剑指offer(27)字符串的排列

    题目描述 输入一个字符串,按字典序打印出该字符串中字符的所有排列.例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba. 输入描述:输入 ...

  2. CEF 设置Cookie

    参考文档:http://magpcss.org/ceforum/apidocs3/projects/(default)/CefCookieManager.html 转载:https://www.cnb ...

  3. FJUT3701 这也是一道数论题(线段树)题解

    Problem Description 好久没出数据结构题,现在赶紧来做道数据结构题热热身 小q现在要去银行,他有个很厉害的bug能看到前面排队的人.假如当前有人正在办理业务,那么肯定要等待前一个人完 ...

  4. variable 'o' used without having been completely initialized Compiling Vertex program

    variable 'o' used without having been completely initialized Compiling Vertex program   v2f vert (ap ...

  5. itsdangerous

    将字典进行加密.解密 通过私钥保证安全性 serializer=TimedJSONWebSignatureSerializer(私钥,过期时间) dumps(字典)=====>返回加密字符串 l ...

  6. JAVA-抽象类/类继承

    1.当一个类继承一个抽象类的时候,必须实现抽象类的方法.如果子类没有实现父类的抽象方法,则必须将子类也定义为abstract类. 2.被final修饰的类为最终类,不能被继承.而类前面如果有abstr ...

  7. part4:素数判别

    法一: √n判别 这个的话就是暴力了吧,不过只能判别单个数是不是质数,而且很大的话会爆 //没有代码qwq(不想写 法二:埃式筛法 O(nloglogn)判别 直接代码好不啦: ],n,num; ]; ...

  8. android SDK SDK Manager.exe 无法打开,一闪而过最终解决办法

    这个问题是由于Android Studio 自动更新之后 ,针对android-sdk-windows\tools 这个文件进行了拆分删除 这里做一下说明: 经过Android studio处理之后, ...

  9. 注册一个gitHub

    GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub. GitHub 于 2008 年 4 月 10 日正式上线,除了 Git 代 ...

  10. Mac使用Shell(终端)SSH连接远程服务器

    先进入终端 输入:ssh -p 端口号 服务器用户名@ip (例如ssh -p 22 root@119.10.168.63)回车,到这会让你输入yes或者no来确认是否连接,输入yes回车 然后输入在 ...