python常用功能介绍之一:编码与解码

Python2.7 编码与解码理解 Python 网络编程 阅读详情

介绍几个常用概念:

1. unicode和str:

    前者是没有编码过的字符串;后者是已经编码成某一种编码方式的字符串,例如是gbk,utf-8,ascii等编码方式的字符串。两者都是basestring的子类

 

2. 系统编码,代码编码,文件编码,终端输入输出编码

    系统编码: 默认编码,正常情况下window系统默认是gbk,linux系统默认是utf-8,可用locale.getdefaultlocale()和locale.setdefaultlocale()来控制,与encode有关

    代码编码:python代码中的编码,默认是ascii,可用"# -*- coding: utf-8 -*-"这种方式指定。python默认编码可用sys.getdefaultencoding()和sys.setdefaultencoding()来控制

    文件编码:sys.getfilesystemencoding()

    终端输入编码:sys.stdin.encoding

    终端输出编码:sys.stdout.encoding,必须与locale编码保持一致,才能print出正确str

 

3. 针对编码转换,尽量在代码中全程使用unicode处理,在输入口decode为unicode,在输出口encode为相对应的str

 

 

例1:

#coding:utf-8              #由于.py文件是utf-8的,所以必须有这一句
import sys
import locale
import os
import codecs

reload(sys)
print sys.getdefaultencoding() + "  - sys.getdefaultencoding()"
sys.setdefaultencoding('utf8')                  #影响encode()
print sys.getdefaultencoding() + "  - sys.getdefaultencoding()"

print sys.stdout.encoding + " - sys.stdout.encoding:"
#sys.stdout = codecs.getwriter('utf8')(sys.stdout)    #影响print
print sys.stdout.encoding + " - sys.stdout.encoding:"

u = u'中国'
print u + "  - u"
a = '中国'
print a + " - a"
print a.decode('utf-8') + " - a.decode('utf-8')"
print a.decode('utf-8').encode('gbk') + "   - a.decode('utf-8').encode('gbk')"
print a.decode('utf-8').encode('utf-8') + " - a.decode('utf-8').encode('utf-8')"
print a.decode('utf-8').encode() + "    - a.decode('utf-8').encode()"

print (sys.stdout.encoding) + " - (sys.stdout.encoding)"
print (sys.stdout.isatty())
print (locale.getpreferredencoding())
print (sys.getfilesystemencoding())

结果:

1. 终端:utf-8  locale:gbk

ascii  - sys.getdefaultencoding()
utf8  - sys.getdefaultencoding()
GBK - sys.stdout.encoding:
GBK - sys.stdout.encoding:
�й�  - u
中国 - a
�й� - a.decode('utf-8')
�й�   - a.decode('utf-8').encode('gbk')
中国 - a.decode('utf-8').encode('utf-8')
中国    - a.decode('utf-8').encode()
GBK - (sys.stdout.encoding)
True
GBK
utf-8

 2. 终端:utf-8  locale:utf-8

ascii  - sys.getdefaultencoding()
utf8  - sys.getdefaultencoding()
UTF-8 - sys.stdout.encoding:
UTF-8 - sys.stdout.encoding:
中国  - u
中国 - a
中国 - a.decode('utf-8')
�й�   - a.decode('utf-8').encode('gbk')
中国 - a.decode('utf-8').encode('utf-8')
中国    - a.decode('utf-8').encode()
UTF-8 - (sys.stdout.encoding)
True
UTF-8
utf-8

3. 终端:gbk  locale:gbk

ascii  - sys.getdefaultencoding()
utf8  - sys.getdefaultencoding()
GBK - sys.stdout.encoding:
GBK - sys.stdout.encoding:
中国  - u
涓???? - a
中国 - a.decode('utf-8')
中国   - a.decode('utf-8').encode('gbk')
涓???? - a.decode('utf-8').encode('utf-8')
涓????    - a.decode('utf-8').encode()
GBK - (sys.stdout.encoding)
True
GBK
utf-8

4. 终端:gbk  locale:utf-8

ascii  - sys.getdefaultencoding()
utf8  - sys.getdefaultencoding()
UTF-8 - sys.stdout.encoding:
UTF-8 - sys.stdout.encoding:
涓????  - u
涓???? - a
涓???? - a.decode('utf-8')
中国   - a.decode('utf-8').encode('gbk')
涓???? - a.decode('utf-8').encode('utf-8')
涓????    - a.decode('utf-8').encode()
UTF-8 - (sys.stdout.encoding)
True
UTF-8
utf-8


 

python中的解码与编码 本文主要介绍了python中的解码与编码,希望能对学习Python的同学们有所帮助。 文章目录 1. 基本概念 2. python中的编码与解码 3. 包含编码的字符串解码实例 阅读详情

相关推荐

Python常用模块 之 base64:处理 base64 编码和解码

Python常用模块 之 base64:处理 base64 编码和解码

孤寒者的博客 3万+

python中sys.setdefaultencoding('utf-8')的作用

在python中,编码解码其实是不同编码系统间的转换,默认情况下,转换目标是Unicode,即编码unicode→str,解码str→unicode,其中str指的是字节流,而str.decode是将字节流str按给定的解码方式解码,并转换成utf-8形式,u.encode是将unicode类按给定的编码方式转换成字节流str。注意调用encode方法的是unicode对象,生成的是字节流;调用d...

weixin_30752699的博客 738

MIPI信号的分析--结合示波器实际测试波形

如果排查的思路对你有帮助,请记住 消雨匆匆 or 大吊工。码字和排查很累,仅此而已 ,硬件不是抄电路,拿烙铁,懂点软件,细致分析,找问题和破案搜集线索是一样的。 部分内容来自于此博客的大神总结: http://www.elecfans.com/news/wangluo/20170323499614.html http://www.elecfans.com/yuanqijian/jieko...

消雨匆匆 4万+

sys.getdefaultencoding() 和 sys.setdefaultencoding()

sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。 sys.setdefaultencoding(): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。(见设置系统默认编码 ) ...

weixin_43824302的博客 2883

物联网开发笔记(34)- 使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

使用Micropython开发ESP32开发板之控制步进电机(28BYJ-48)

zhusongziye的博客 1万+

小程序强制更新避坑指南:手把手教你实现无缝升级

本文详细解析小程序强制更新的实现方法,重点介绍wx.getUpdateManager API的使用技巧,帮助开发者规避冷热启动机制下的版本管理陷阱。通过实战案例展示如何设计多级更新提示策略,确保用户无缝升级,提升小程序版本更新率。

star的博客 280

Python3字符编码小结

引文 初学Python,在vim中编辑代码时发现只要含有中文就会报错 爬取的文字有时会出现乱码,而且在windows和Linux环境下情况会不一样 当时在网上找了解决方案但没有理解 所以想着总结一下Python中的编码问题 看了好多文章和资料,发现网上有质量的文章太少,大多都没能解决我的疑惑,而且重复率很高 先来说一下vim中的编码问题 vim中的乱码 ...

莫比乌斯的小纸条 1193

CELF(Cost-Effective Lazy Forward selection)具有成本效益的惰性前向选择算法

CELF(Cost-Effective Lazy Forward selection)算法解析      引言:在社交网络影响力最大化问题的求解过程中,我们往往需要去选择一些目标种子结点作为信息初始传播的源头。贪婪算法在传播效果上的解决可以达到影响的最大化,但是在时间复杂度上面显得确十分糟糕。为此CELF算法应势而生,CELF算法利用了函数次模性的特点,在第一轮选择种子结点时,计算网络中所有节点的边际收益,但将在之后的过程中,不再做网络节点边际收益的重复计算,这相对于传统的贪婪算法,将在时间上得到非常明显的

hahaxq的博客 2477

Python乱码解决以及sys编码格式

1. Python中文乱码解决 ① 错误:SyntaxError: Non-ASCII character '\xe9' in file ② 解决:加上# -*- coding: utf-8 -*-,代码如下: # -*- coding: utf-8 -*- print '中文乱码' 2. 修改系统模块(sys)的编码格式 2.1. 方式一: # -*- coding: utf-8...

yetugeng的专栏 2204

RK3568平台(camera篇) mipi csi接口

MIPI联盟,即移动产业处理器接口(Mobile Industry Processor Interface 简称MIPI)联盟。MIPI(移动产业处理器接口)是MIPI联盟发起的为移动应用处理器制定的开放标准和一个规范。MIPI是差分串口传输,速度快,抗干扰。主流手机模组现在都是用MIPI传输,传输时使用4对差分信号传输图像数据和一对差分时钟信号;MIPI摄像头有三个电源:VDDIO(IO电源),AVDD(模拟电源),DVDD(内核数字电源),不同sensor模组的摄像头供电不同。

weixin_49303682的博客 5345

Python 爬虫实战:爬取 B 站 UP 主的全部视频数据

本文详细介绍了基于Python开发B站UP主视频数据爬虫的技术方案。通过分析B站API接口,使用requests库发送HTTP请求并处理JSON数据,结合pandas进行结构化存储。文章重点解决了接口鉴权、分页爬取、反爬策略等核心难点,实现获取视频标题、播放量、点赞数等关键指标。同时强调数据爬取需遵守平台规范,仅限技术研究使用。该方案为B站视频内容分析提供了可靠的数据采集基础,具有实际应用价值。

2503_91057718的博客 2492

python的默认编码

修改系统默认编码 系统默认使用ascii编码,需要进行相应的修改。 这个编码和开头的encoding不同之处在于,开头的encoding是对于文件内容的编码。 这里的编码是一些python方法中默认使用的编码,比如对str进行encode的时候默认先decode的编码,比如文件写操作write的encode的编码(关于文件读写见下文第7点) 复制代码 import sys reload(sys) sys.setdefaultencoding(‘utf8’) s = ‘字节串str’ s.encode(‘.

Daningliu的博客 7458

SAP BOM (物料清单) 详解

BOM(Bill of Materials,物料清单)是制造业和生产管理中的一个核心概念。它列出了生产某种产品所需的所有原材料、零部件和子组件的详细信息。在SAP系统中,BOM管理是为了帮助企业在生产过程中更高效地管理物料需求、库存以及生产成本。BOM不仅包括物料的数量和单位,还详细描述了每个物料的规格、标准和在产品中的位置。

我小时候很黑的博客 4245

Python中Base64编码与解码

Base64简介 Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符(包括a-z、A-Z、0-9、/、+)来表示二进制数据的方法。Base64编码是从二进制到字符的过程,可用于在HTTP环境下传递较长的标识信息。 按照RFC2045的定义,Base64被定义为:Base64内容传送编码被设计用来把任意序列的8位字节描述为一种不易被人直接识...

pengjunlee的博客 8万+

将指定文件夹下每张用LabelImg标注的图片中标注部分抠出来保存到指定文件夹下。

将指定文件夹下每张用LabelImg标注的图片中标注部分抠出来保存到指定文件夹下。

weixin_44119674的博客 440

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

Python中的编码与解码字符集与Unicode的详解

本文深入探讨了Python中的字符编码与解码的重要性和应用。首先,我们了解了字符集与编码的基本概念,以及Unicode作为全球字符标准的重要性。然后,我们介绍了Python中处理编码与解码的基本操作,包括字符串的编码和解码、Unicode编码的获取和字符创建,以及处理编码错误的方法。接着,我们深入了解了UTF-8作为Unicode的一种实现方式,并探讨了Python中的一些高级字符处理功能,如编码器和解码器、文本处理工具以及文件编码转换。

一键难忘的博客 3771

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Python-URL编码和URL解码方法

Python中对字符串的url编码和url解码方法,使用到了urllib库

害怕也得前进 3万+

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

编码与解码——python

之间的转换,尤其是在处理文本数据与二进制数据交互时(如文件读写、网络传输)。在 Python 中,**编码(Encode):国际通用,支持所有 Unicode 字符(推荐默认使用)。:Python 默认编码与系统相关,建议显式指定编码(如。:编码和解码必须使用相同的字符集,否则会导致乱码或错误。是可变(mutable)的字节序列,支持原地修改。解码(Decode)**通常用于处理字符串(:确保编码、解码、文件读写时使用同一编码。(1)编码(字符串 → 字节)(2)解码(字节 → 字符串)

2401_87975790的博客 1401

python中编码与解码简记

本文介绍了在python中读取文本文件如何判断和指定编码方式,及字符串与字节类型相互转换的编码解码方式,还介绍了base64与Quoted-Printable编码解码的注意要点

weixin_46846685的博客 1835

Python字符串的编码与解码

作为一名测试工程师,了解Python字符串的编码与解码对于处理不同字符集的数据、网络通信和文件操作至关重要。本文将详细介绍Python中字符串的编码与解码方法,包括常见编码格式、编码与解码的基本操作以及在实际应用中的注意事项。本文详细介绍了Python字符串的编码与解码,包括常见编码格式、编码与解码的基本操作以及实际应用中的注意事项。掌握这些技巧,可以帮助你在处理不同字符集的数据、网络通信和文件操作时更加高效和自信。希望这些内容对你有所帮助,并能在日常编程中提升你的技能。

霍格沃兹测试学院的博客 1590

python解码和编码_Python的解码和编码

使用Python语言做网络爬虫或者写自动化脚本时,总会遇到“中文乱码”的问题,很是头疼。很多“中文乱码”的问题是跟Python的解码/编码有关,所以今天和大家说说Python的解码/编码(以Python2.7为例)。1.什么是Python解码/编码?Python里面的解码和编码也就是unicode和str这两种形式的相互转化。解码就是str -> unicode,相反的,编码是unicode ->...

weixin_39628105的博客 2221

Base64编码与解码 ——Python实现

文章目录1. 引言2. Base64简介3. 预习知识3.1 字节3.2 二进制 与字节3.3 ASCII码3. Base64编码3.1 个人理解3.2 代码实现4. Base64解码4.1 个人理解4.2 代码实现 1. 引言 记录学习base64编码与解码的思考以及通过Python实现。 2. Base64简介 这里请参考文章:一文彻底看懂Base64原理 声明: 本文的图片均来自上述文章。 我的理解就是,将待编码字符集合与二进制{0, 1}之间相互的等价转换情况。 注意:base64是一种可以算是公开

吉吉有梦想 3913

python解码gbk_python编码:gbk编码与解码

从RF输入的中文会进行unicode编码:u'\u6587\u4ef6\u5230\u8fbe\u6210\u529f'从orc数据库查询到的中文会进行gbk编码得到ASCII:'\xce\xc4\xbc\xfe\xb5\xbd\xb4\xef\xb3\xc9\xb9\xa6'ASCII编码数据进行decode('gbk')后得到unicode编码的数据;unicode编码的数据encode('g...

weixin_39529463的博客 3654

python编码与解码

之前看过编解码,但是还是理解不深,现在重新梳理一遍。 本文总体如下: 1 通俗理解什么是编解码。 或者也可以说为啥一定要编解码?编解码是不是多余的操作? 2 明白编解码的原因,那到底有哪些编解码的方式? 主要讲ASCII和Unicode2种,重点讲由Unicode衍生出来的其他具体细分类型。 为啥要编解码? 编码 编码(encode)是用预先规定的方法 将人类现实生活中各个国家...

fu6543210的博客 2291

Python 中的 Base64 编码解码全解析

Base64 是一种基于 64 个可打印字符来表示二进制数据的编码方式。它将二进制数据按每 3 个字节一组进行划分,每组 24 位,再将这 24 位分成 4 个 6 位的小组,每个 6 位小组的值对应 Base64 字符表中的一个字符,从而将二进制数据转换为文本形式。如果最后一组不足 3 个字节,会用进行填充。Base64 编码常用于在只支持文本数据的环境中传输二进制数据,例如在电子邮件中传输图片、在 URL 中传递二进制数据等。Python 的base64。

Tekin 是深耕技术 20 年的全栈实战派专家,精通 Go/Python/Java 等多语言开发。博客专注技术原理与实战结合,深度解析 Python 高阶编程、Go 语言架构、数据库优化等硬核内容。涵盖并发编程、机器学习、云原生等前沿领域,通过真实案例拆 4612

python 的编码和解码

前言 参考链接 和自己的理解进行整理更新 一、字符与字节 字符是人类能够识别的字体符号,而这些符号要保存到计算机的存储中,就需要用计算机能够识别的字节来表示。 字符编码的作用:将人类可识别的字符转换为机器可识别的字节码, 解码:将机器可识别的字节码转换成人类可识别的字符。 Unicode只是一个符号集,它只规定了人类现实生活所有字体符号的二进制代码,也就是说它给每一个字符一个独一无二的数字来表示。Unicode才是真正的字符串, 而用ASCII、UTF-8、GBK等字符编码表示的是字节串。从上面对各种编码方

weixin_44719529的博客 1800
上一篇: Neutron enable_new_agents
下一篇: python常用功能介绍之二:异常处理
赤焰军
博客等级 码龄12年 87粉丝 63原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值