很多同学对于编码问题都不是很清楚,计算机常见的编码格式为:

ASCII

ISO-8859-1

GB2312

GBK

UTF-8

UTF-16

对于Python开发中,我们一般都是采用统一的编码格式:UTF-8

第一行加入环境申明:

#coding=utf-8

编码操作方式一般都分为:编码(encode)和解码(decode) 但是对于今天我们所要讲解的主角Python来说:

unicode和str两种类型的相互转换则为解码和编码。如下列子:

# coding = utf-8
# Python编码问题
str = "您好"
print("输出字符类型--->>>", type(str))
print(str)
# 采用 encode编码
str1 = str.encode('gbk')
print("gbk--encode--输出字符类型---->>>>", type(str1))
print(str1)
str2 = str1.decode('gbk')
print("-gbk----decode解码--->>>", str2)
str3 = str.encode('utf-8')
print("utf-8---->>encode----->>>", str3)
str4 = str3.decode('utf-8')
print("utf-8---decode---->>>",str4)

从列子中可以看出,不同的编码格式的输出的字符是不一样的字符表达,我们在使用编码和解码的时候都需要采用同一种编码格式进行两者操作,否则就报错。

pritn中文编码问题

如下图:

Python打印变量时,操作系统会对变量进行相应的处理,若变量是str类型,则操作系统直接发送到终端显示,若变量是unicode类型,则操作系统会对变量用sys.stdout.encoding编码对变量encode,若变量中含有sys.stdout.encoding未定义字符,则会出现UnicodeEncodeError。编码后字节序列被发送给终端,假若终端设置的编码和str编码不一致,终端就会显示出乱码。

两种错误情况:

1:UnicodeEncodeError

若变量中含有sys.stdout.encoding未定义字符则会出现如上错误。一般避此个错误的方式就是:

print("本地终端环境的默认编码---->>>",sys.getdefaultencoding())

首先打印出本地环境的编码格式,然后在字符串编码的时候就现在对应的编码格式进行编码和解码。

a = '你好呀'
b = u'Python'
print("--->>>",a)
print('采用utf-8--->>',b.encode('utf-8'))

接下来我们来从实例中看看,编码和解码的用法。

# 读取txt 设置编码格式 一定要加上encoding 也就是文件的打开的编码格式 ,不加encoding则报错。
f = open("D:imgstest.txt",encoding='utf-8')
s = f.read()
f.close()
print("--->>>",type(s))
print("---->>>", s)

总结,Python3中编码问题比Python2有了很多改善。

P3中的编码我们只需要记住一点,打开读取文件的时候一定要声明编码格式,开发编程前都提前设置好环境编码,一般都是默认的utf-8格式,解码和编码都使用统一的编码格式进行操作,这样就能保存文件操作的时候不会出现编码。

更多精彩请持续关注作者,点击保存以下图片,获取更多资源和干货。

http://weixin.qq.com/r/Dio1LZrEncfird5O938c (二维码自动识别)

python写byte数组到文件_这可能是写过最详细的Python文件操作。网友:收藏备用(中篇)...相关推荐

  1. python中numpy数组的合并_基于Python中numpy数组的合并实例讲解

    基于Python中numpy数组的合并实例讲解 Python中numpy数组的合并有很多方法,如 - np.append() - np.concatenate() - np.stack() - np. ...

  2. python什么是入口文件_小问题大隐患:如何正确设置 Python 项目的入口文件?

    有一位同学提到了 Python 找不到模块的问题: 问题涉及到的代码结构和代码截图如下: 这个问题的解决方法非常简单,就是把start.py文件从bin文件夹移出来就好了. 但如果对这个问题进一步分析 ...

  3. python播放音频文件_详解使用pygame播放一段MP3音频文件

    近日,在梳理pygame模块的时候发现一个很有用的模块mixer模块,这个模块翻译过来就是混音器,它可以加载和播放音频文件,甚至可以对混音器进行设置和处理,其功能非常强大.今天,我们一起来梳理一下混音 ...

  4. python定义三维数组手机端_三维数组python

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 我有一个三维数组temprsubset我取了两个维度的平均值. 代码:f=mfd ...

  5. python库读取cif文件_技术专栏:一篇文章搞懂晶体学信息文件CIF及其获取方法

    [引语]材料人现在设立各种文章专栏,所涉及领域正在慢慢完善,由此也需要更多的专栏作者,没错,我们正在招兵买马,期待你们的加入,有意向的小伙伴可直接联系cailiaorenVIP.不要再犹豫,下一个专栏 ...

  6. python开发数据管理系统客户桌面_实践是最好的老师:给中级 Python 开发人员的 13 个项目构想...

    原标题:实践是最好的老师:给中级 Python 开发人员的 13 个项目构想 学习 python 的基础知识是一种美妙的体验.但是,学习的喜悦可以被对实践项目的渴望所取代.想要建立项目是正常的,因此需 ...

  7. java内存中读文件_关于内存管理:读取Java中的大文件

    我需要一个非常了解Java和内存问题的人的建议. 我有一个大文件(大约1.5GB),我需要将此文件切成许多小文件(例如100个小文件). 我通常知道如何做到这一点(使用BufferedReader), ...

  8. JAVA file列出所有文件_用Java代码列出一个目录下所有的文件

    1.File类 File类在java.io.File包中,所以要导入这个包. File类中用到的方法: boolean isDirectory()       测试此抽象路径名表示的文件是否是个目录 ...

  9. python xlsx 样式 谷歌开源 样式_连续加班一周最终把所有的Python库整理出来了,愿各位早日学会Py-站长资讯中心...

    MySQLdb,成熟的[MySQL]数据库模块, Baresql,SQL数据库包 ZODB,Python本地对象数据库.一个K-V对象图数据库. pickledb,简单和轻量级的K-V键值存储. Ti ...

  10. 自己建文件111 txt python_这可能是最详细的Python文件操作

    删除 # ==================删除================== # 只能删除文件,若为目录则报错 # 若文件正在使用,Windows下会直接报错,Linux下会在目录表中删除记 ...

最新文章

  1. Android JNI初试之环境搭建,最新方式的HelloWorld
  2. 不解析,使用解析对象
  3. hive简介(大数据技术)
  4. linux命令fdisk,Linux fdisk 命令使用详解
  5. python雷达图怎么做_PYTHON绘制雷达图代码实例
  6. 截取文件最后10行_10 行 Python 代码自动清理电脑内重复文件,解放双手
  7. mysql简介博客_mysql简介
  8. SpringBootTest测试类报错:Suppressed: java.lang.IllegalStateException: Unable to find a @SpringBootCon
  9. EF – 4.CRUD与事务
  10. 实对称矩阵的特征值求法_矩阵论系列——特征值篇
  11. UG标准件库的使用方法
  12. CCF“信息检索”的前沿讲座
  13. Retrofit原理
  14. 史上最简单的spark教程第二章-快速开发部署你的第一个Java+spark程序
  15. 如何快速学习一门新技术
  16. 拼多多商家制作商品详情页的技巧?
  17. python冒号用法-python 列表中[ ]中冒号‘:’的作用
  18. win10/win7文件夹或文件查看方式怎么统一设置
  19. 关于DebugView无法打印出KdPrint信息
  20. L2-032 彩虹瓶

热门文章

  1. Knowledge Point 20180305 数据在计算机中的表示
  2. 关于光耦隔离通讯中限流电阻的选取问题
  3. Windows Phone开发(16):样式和控件模板
  4. java中数组的复制
  5. ((ios开发学习笔记九)) Simple TableView 实现(附 实例源码)
  6. PHP 利用AJAX获取网页并输出(原创自Zjmainstay)
  7. 利用 socket 获取 tcp 包并解析的问题。
  8. SQL中获取刚插入记录时对应的自增列的值
  9. 快手用旺旺瓶子做机器人_用平底锅做西多士,早餐不发愁,孩子三天两头点名吃,简单快手...
  10. vb matlab 比较,【笔记】VB.NET和MATLAB读取二进制文件(中文+数值)之比较