文件编码:

知识点不多,但及其重要,python2和python3处理机制还有不同点,需要注意。

首先:

编码、数据类型,完全不同的概念。

文件编码:可以遵循开发环境、可以自行设定。

变量值编码:python2、我不清楚,貌似可以设定吧sys.setdefaultcode()方法设定?

      python3、变量值默认的编码就是unicode

简述一下,编码从utf-8到gbk过程:

utf-8 --> unicode --> gbk

gbk转为utf-8

gbk --> unicode --> utf-8

也就是说传说中的万国码,就是厉害。通过它可以转任何。

python2中:

#字符转编码:
#python2 原编码(utf8) --> 目标编码(gbk),需要 str.decode("utf-8").encode("gbk"),
#第一步的decode方法用于转码为unicode,参数为我当前是什么编码的(utf8),
#第二步的encode方法用于从unicode到目标编码(gbk),参数为目标编码(gbk)
#decode目标是unicode,encode源是unicode,不能跨过unicode直接用encode转为目标编码,这是字符转码的标准流程。import sys
print(sys.getdefaultencoding()) #打印python环境的默认编码
s="你好"
s_to_gbk=s.decode("utf-8").encode("gbk") #decode过程就变成unicode再encode到目标
print(s_to_gbk,type(s_to_gbk))

python3中:

存储为unicode编码,可以直接进行转码encode()方法,但是数据类型会被变为byte,不重要,编码反正转了。

可以通过decode()方法转为字符串,但此时仅改变了数据类型,编码没有发生变化,就是encode()时的编码。

编码、数据类型  完全不同的概念

#python3 过程一样,先到转到unicode,再到目标编码,
#但是,python3,底层存储时的值就是unicode编码的,所以字符串变量不再提供decode方法
#由此,明确两个问题
#1、python3,直接str.encode("目标编码"),只是变成了byte数据类型,不过编码就是目标编码。
#2、python3,既然编码过程无变化,如果有需求,
# str.encode("utf-8").decode("utf-8").encode("gbk")
#这是为了明确转码过程,实际应用不大,因为unicode编码是万国码,需要对接本地码程序需求的话,直接转就行了
import sys
print(sys.getdefaultencoding()) #打印python环境的默认编码
s="你哈"
print(s.encode("gbk")) #unicode直接转gbk的输出结果
print(s.encode("utf-8")) #unicode直接转utf-8的输出结果(byte类型,编码正确)
print(s.encode("utf-8").decode("utf-8").encode("gbk")) #unicode直接转utf-8,再转为unicode,再转为gbk,(还是byte类型,编码正确)
# 经过完整流程后,与直接转gbk结果相同,这个就是为了证明流程、结果的正确
#python3中,只有encode()方法以后,数据类型都是byte,编码是指定编码,无参就是默认编码 可以再转回字符串的。。。
# decode()方法就行了,参数要根据实际参数传,不传可以,除非可以确定这个需要转回字符串的比byte类型的数据,就是默认编码,不然就异常。
s_to_gbk=s.encode("gbk").decode("gbk") #decode不写gbk,会报异常说,gbk不能转到响应目标编码,
print(s_to_gbk,type(s_to_gbk)) #证明转回了字符串类型,并且是gbk编码的
#python3,在encode的时候除了转了编码,同时转了数据类型变为byte

转载于:https://www.cnblogs.com/hello-init/p/7730092.html

python3.x Day3 文件编码相关推荐

  1. python3默认的字符编码和文件编码_Python的字符编码之三个问题

    看过很多关于Python字符编码的博客,或深或浅,总感觉有点云里雾里,今天这里我尝试用我的方式也来凑个热闹. 首先,我们要弄清楚几个问题,这个对我们后面的理解非常重要. 字节与字符 Python源代码 ...

  2. python3中默认的字符编码和文件编码_python3 unicod,utf-8,gbk的编码和解码中文显示问题...

    目的: 清楚了解为什么在python3不同的编码,解码,windows,linux操作系统下,字符是否能够正确显示. 前提: 了解不同编码用不同的二级制编码和长度来表示字符. 在python3中,各种 ...

  3. python代码大全o-python文件编码及执行

    兼容中文编码 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码. 当Python解释器读取源代码时,为了让它按UTF-8编 ...

  4. python申明文件编码_Python源代码文件的文本编码

    原博文 2012-07-22 01:46 − 源代码的编码问题对于任何语言的源文件都是存在的,只不过对于脚本语言,这个问题更突出一些. 有的人可能会说,既然源代码在文本编辑器中可以正常显示,说明编码没 ...

  5. python 文件编码的识别_【python】python编码方式,chardet编码识别库

    环境: python3.6 需求: 针对于打开一个文件,可以读取到文本的编码方式,根据默认的文件编码方式来获取文件,就不会出现乱码. 针对这种需求,python中有这个方式可以很好的解决: 解决策略: ...

  6. Python3 对于中文文件的读写处理

    字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(en ...

  7. python2.x文件编码

    #这几种文件编码的方式,python2都支持. #utf-8,utf8都行,大小写没关系. #一定要放在文件的开头的第一行或第二行 # encoding=utf8 # encoding=utf-8 # ...

  8. python文件编码及执行

    兼容中文编码 由于Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码. 当Python解释器读取源代码时,为了让它按UTF-8编 ...

  9. python怎么读取csv文件-python3读取csv文件任意行列代码实例

    这篇文章主要介绍了python3读取csv文件任意行列代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 读取每一行 reader = csv. ...

  10. 学习笔记整理——vim,vim文件编码,vim配置文件

    1.vim 安装包 vim-enhanced 2. 移动到行首 shift 6,移动到行尾 shfit + 4. 3. 移动到某行,nG,1G 首行,G 行尾,10G 移动到第十行 4. nx 向后删 ...

最新文章

  1. MySQL 如何查找删除重复行?
  2. Vue--findIndex方法的使用原理
  3. 不吹不擂,一文揭秘鸿蒙操作系统
  4. 解决git提交问题error: The requested URL returned error: 403 Forbidden while accessing
  5. 51单片机并行I/O口工作原理
  6. java如何存储一个向量到一个矩阵的一个位置_SIMD数据并行(一)——向量体系结构...
  7. mysql linux root密码忘记了怎么办_linux下忘记mysql root密码解决办法
  8. matlab小游戏源代码下载,3个游戏代码和164个教学源码 - 源码下载|Windows编程|源代码 - 源码中国...
  9. 解决POI读取Excel内存溢出的问题
  10. python安装包后找不到指定模块
  11. video.h5.player.js视频播放器
  12. python 课程设计扫雷报告_《扫雷课程设计报告.doc
  13. 企业微信对接金蝶云星空单据模板-日常费用报销
  14. 爬虫项目实战1——爬取天善课程
  15. 【SAP】 SAP自定义权限对象
  16. 极路由4/b70刷华硕(padavan)教程
  17. View Programming Guide for IOS:Views笔记
  18. pacemaker+corosync的一些总结
  19. 计算机基础之计算机的发展历史
  20. 了解node.js模块化和npm包

热门文章

  1. html基础之select ,datalist与details的异同
  2. 李炎恢老师的php源码以及附带一个php手册
  3. 一、JDK下载安装、eclipse下载安装(带资源)
  4. 计算机组成原理——第七章
  5. Apache JMeter web 应用测试工具使用快速入门
  6. java socket 客户端接收_java socket,怎么把客户端接收到的用户名和密码发送给后台?...
  7. machine learning-mnist
  8. linux查看所有目录
  9. webpack打包vue项目IE报错,“对象不支持“use”属性或方法”
  10. Python-docx 读取word.docx内容