python中的默认编码使用

 更新时间:2024年06月24日 10:18:49   作者:冰美式QAQ  
这篇文章主要介绍了python中的默认编码使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

python默认编码

python2中,默认使用的是ASCII编码。

这个编码和开头的encoding不同之处在于,开头的encoding是对于文件内容的编码,默认编码是一些python方法中默认使用的编码

比如对str进行encode的时候默认先decode的编码,比如文件写操作write的encode的编码等。

python3中默认使用的是UTF-8编码

sys.getdefaultencoding() 获取默认编码

import sys
print(sys.getdefaultencoding())  
  • python2

D:\SoftInstall\Python\Python38\python3.exe E:/PycharmProjects/displayPY3/1.py
ascii

Process finished with exit code 0

  • python3

D:\SoftInstall\Python\Python38\python3.exe E:/PycharmProjects/displayPY3/1.py
utf-8

Process finished with exit code 0

sys.setdefaultencoding(编码格式) 修改默认编码

下面这个例子,用python2环境

# coding=utf-8
import sys
print(sys.getdefaultencoding())
reload(sys)
sys.setdefaultencoding('utf-8')
print(sys.getdefaultencoding())
s = '中文'
s.encode('utf-8')
print(s)
#等价于s.decode(“utf-8”).encode('utf8')

E:\PycharmProjects\LEDdisplay2\venv\Scripts\python.exe E:/PycharmProjects/LEDdisplay2/2.py
ascii
utf-8
中文

如果上述代码没有修改默认编码,就会使用默认编码ASCII来decode变量s,就会报错

# coding=utf-8
import sys
print(sys.getdefaultencoding())
s = '中文'
s.encode('utf-8')
print(s)

E:\PycharmProjects\LEDdisplay2\venv\Scripts\python.exe E:/PycharmProjects/LEDdisplay2/2.py
ascii
Traceback (most recent call last):
  File "E:/PycharmProjects/LEDdisplay2/2.py", line 5, in <module>
    s.encode('utf-8')
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

Process finished with exit code 1

上述代码为什么需要reload(sys)?

请看下面的代码:

# coding=utf-8
import sys
print(sys.getdefaultencoding())
# reload(sys)
sys.setdefaultencoding('utf-8')
print(sys.getdefaultencoding())
s = '中文'
s.encode('utf-8')
print(s)

E:\PycharmProjects\LEDdisplay2\venv\Scripts\python.exe E:/PycharmProjects/LEDdisplay2/2.py
Traceback (most recent call last):
  File "E:/PycharmProjects/LEDdisplay2/2.py", line 5, in <module>
    sys.setdefaultencoding('utf-8')
AttributeError: 'module' object has no attribute 'setdefaultencoding'
ascii

Process finished with exit code 1

reload是用于重新加载之前import的模块。

这里需要重新加载sys的原因是:

python在加载模块时候删除了sys中的setdefaultencoding方法(可能是出于安全起见),所以需要reload这个sys模块。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 使用Python实现图像标记点的坐标输出功能

    使用Python实现图像标记点的坐标输出功能

    这篇文章主要介绍了使用Python实现图像标记点的坐标输出功能,非常不错,具有一定的参考借鉴价值,需要的朋友参考下吧
    2019-08-08
  • 浅谈keras中loss与val_loss的关系

    浅谈keras中loss与val_loss的关系

    这篇文章主要介绍了浅谈keras中loss与val_loss的关系,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python实现的一个简单LRU cache

    Python实现的一个简单LRU cache

    这篇文章主要介绍了Python实现的一个简单LRU cache,本文根据实际需求总结而来,需要的朋友可以参考下
    2014-09-09
  • Python代码模拟CPU工作原理

    Python代码模拟CPU工作原理

    Python代码来实现一个最简单的CPU。用代码模拟大的部件,使大家从原理上理解CPU工作。使它可编程,支持加减法运算、读写内存、无条件跳转、条件跳转的功能。
    2023-01-01
  • pandas中df.groupby()方法深入讲解

    pandas中df.groupby()方法深入讲解

    在使用pandas进行数据统计分析时遇到了问题,找了很久才找到解决办法,所以下面这篇文章主要给大家介绍了关于pandas中df.groupby()方法的相关资料,需要的朋友可以参考下
    2022-12-12
  • python subprocess执行外部命令常用方法详细举例

    python subprocess执行外部命令常用方法详细举例

    这篇文章主要给大家介绍了关于python subprocess执行外部命令常用方法的相关资料,Python的subprocess模块提供了一种在Python中调用外部命令的方法,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12
  • Python2.x与Python3.x的区别

    Python2.x与Python3.x的区别

    这篇文章主要介绍了Python2.x与Python3.x的区别的相关资料,需要的朋友可以参考下
    2016-01-01
  • Python使用matplotlib显示图像实例

    Python使用matplotlib显示图像实例

    在Python项目中处理图像数据之前,需要确保安装了matplotlib库,它是一个用于绘制图表和图像显示的工具,若尚未安装,可以使用pip命令进行安装,安装完成后,可以通过matplotlib的pyplot模块读取并显示MNIST手写数据集中的图像,若需要显示灰度图
    2024-10-10
  • python实现发送邮件功能代码

    python实现发送邮件功能代码

    这篇文章主要介绍了python实现发送邮件功能代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • django模型层(model)进行建表、查询与删除的基础教程

    django模型层(model)进行建表、查询与删除的基础教程

    这篇文章主要给大家介绍了关于django模型层(model)进行建表、查询与删除的等基础操作的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧。
    2017-11-11

最新评论