python中的编码问题(decode,encode,codecs)

python:codecs --- 编解码器注册和相关基类 阅读详情

编码方式:一个字节包括八个比特位,每个比特位表示0或1,一个ASCII编码使用一个字节(如10101000),因此ASCII编码方式只能表示 2 7 = 128 ( 除 去 字 节 的 最 高 位 作 为 作 奇 偶 校 验 位 ) 2^7=128(除去字节的最高位作为作奇偶校验位) 27=128(除去字节的最高位作为作奇偶校验位)。这样表示字符有限,像汉字字符就没法表示了,因此又出现了出现了Unicode编码。Unicode编码通常由两个字节组成,共表示 256 ∗ 256 256*256 256∗256个字符,即所谓的UCS-2。某些偏僻字还会用到四个字节,即所谓的UCS-4。但是这样很浪费内存空间,因此又出现可变长的编码方式UTF-8编码。UTF-8可以表示,从英文字母的一个字节,到中文的通常的三个字节,再到某些生僻字的六个字节,也兼容ASCII编码。我国有一套自己编码方式:GB2312和GBK。

1.encode与decode

在Python3.X 源码文件中默认使用utf-8编码,所以可以正常解析中文,无需指定 UTF-8 编码。:

import sys
print(sys.getdefaultencoding())

输出:

utf-8

我们可以直接调用decode,ecode来实现编码和解码,encode的作用,使我们看到的直观的字符转换成计算机内的字节形式,decode刚好相反,把字节形式的字符转换成我们看的懂的、直观的、“人模人样”的形式,比如:

a="中文"
a = bytes(a,encoding='utf-8')
print(type(a),a,len(a))
mid=a.decode()
print(type(mid),mid,len(mid))

输出:

<class 'str'> 中文 2
<class 'bytes'> b'\xe4\xb8\xad\xe6\x96\x87' 6
<class 'str'> 中文 2

此处先通过bytes(a,encoding=‘utf-8’)先转化为utf-8编码的字节流,然后可以直接通过decode()转化为正常可见字符串,默认的decode是utf-8的,若是其他编码方式,要把此参数填写上。比如:

a="中文"
a=bytes(c,encoding='gb2312')
print(type(a),a,len(a))
mid=a.decode()
print(type(mid),mid,len(mid))

输出:

<class 'str'> 中文 2
<class 'bytes'> b'\xd6\xd0\xce\xc4' 4
<class 'str'> 中文 2

据说字符在计算机的内存中统一是以Unicode编码的。只有在字符要被写进文件、存进硬盘或者从服务器发送至客户端(例如网页前端的代码)时会变成utf-8。unicode-escape将Unicode的内存编码值进行存储,读取文件时在反向转换回来。这里我们可以是使用encode(‘unicode-escape’)将字符以Unicode的字节形式表现出来:

a="中文"
print(type(a),a,len(a))
a = bytes(a,encoding='unicode_escape')
print(type(a),a,len(a))
mid=a.decode("unicode_escape")
print(type(mid),mid,len(mid))

输出:

<class 'str'> 中文 2
<class 'bytes'> b'\\u4e2d\\u6587' 12
<class 'str'> 中文 2

2.codecs

codecs是专门用作编码转换
解码:

import codecs
look2=codecs.lookup("gb2312")
c="中文"
mid=look2.encode(c)
print(type(mid),mid,len(mid))
mid=look2.decode(mid[0])
print(type(mid),mid,len(mid))

输出:

<class 'tuple'> (b'\xd6\xd0\xce\xc4', 2) 2
<class 'tuple'> ('中文', 4) 2

看输出,codecs的encode和decode输出的是tuple,第一位是值,第二位是长度。

参考 https://www.jb51.net/article/92006.htm

VESC电调高级调参指南:电机校准与性能优化实战解析 本文详细解析了VESC电调的高级调参方法,包括电机校准与性能优化实战技巧。从基础参数设置到高级机械参数优化,再到动态性能调优,提供了全面的调参指南。特别针对电机类型、功率设置、电池参数配置等关键环节给出实用建议,帮助用户充分发挥VESC电调的性能潜力。 阅读详情

相关推荐

Cursor赋能Qt C++:从环境配置到项目构建的AI开发新范式

本文详细介绍了如何利用Cursor工具链提升Qt C++开发效率,从智能环境配置到CMake项目构建的全流程实践。通过AI辅助编程、Qt生态优化及高级调试技巧,开发者可快速完成从传统开发到AI驱动的新范式转换,显著缩短项目搭建时间并提升代码质量。

weixin_30329623的博客 546

python之decode、encode及codecs模块

直接贴地址 :http://www.cnblogs.com/hester/p/5465338.html

余安 2776

统信UOS V20 安装mysql5.7.42详细教程

到bin/下,执行下面的命令,初始化mysql服务信息,得到数据库的初始密码,实际如果目录不一样记得换成自己的目录。下载后通过远程将安装包上传至服务器,我这里将安装包上传至/usr/local/mysql 下。ps:这时候如果还是不能远程访问的话,可能是防火墙的原因,命令行执行以下命令即可。再次登录,发现缺少 libtinfo.so.5文件,再次建立软连接。登录,发现报错,提示缺少libncurses.so.5文件,使用。创建 /var/lib/ 下mysql目录。登录成功,修改密码,设置远程访问。

为谁伫立在风中 1万+

python编码问题 decode('unicode-escape')

任意编码的字符串,如果内容是unicode码,如:‘\u53eb\u6211’,使用decode('unicode-escape')命令,对字符串内容按照unicode解码后得到其对应的汉字。

无形的专栏 1636

功率半导体器件选型指南:从GTO、GTR到MOSFET、IGBT的原理与应用

功率半导体器件是电力电子系统的核心,如同电路中的智能开关,负责电能的转换与控制。其工作原理基于半导体材料的导电特性,通过控制信号精确管理电路的通断。这类器件的技术价值在于提升能效、减小体积并增强系统可靠性,广泛应用于变频器、逆变器、开关电源及新能源领域。理解不同器件如MOSFET的雪崩能量与IGBT的损耗计算,是进行高效、可靠电路设计的基础。本文聚焦于GTO、GTR、MOSFET和IGBT这四类经典全控型器件的特性对比与选型策略,帮助工程师在具体项目中做出经济可靠的选择。

cumo7370的博客 447

SAP BASIS运维之三方SSL证书导入

事情的起因是我司SAP使用的SSL证书即将要到期了(上一个的SAP BASIS也辞职了),需要进行证书的更换。如上图所示,我司的证书有效期到2024年4月30日到期,需要提前预防并更换,防止过期后导致接口和访问出现问题。9.在弹出的框中,选择我们在第5个步骤中导出的转换结果存储地址,并选择导出的转换文件,点打开。12.最后一步也是关键的一步,不然就会无法更新证书,再点击左上角的个人安全环境,点另存为。10.在打开后的弹窗中,输入我们在第4个步骤中设置的密码。6.经过以上步骤后,我们获得了最终的证书文件。

fegda的专栏 1885

Python教程:​codecs模块(编码+解码)

1.查找字符编码的对应关系:codecs模块提供了lookup方法,可以查找字符编码的对应关系,lookup函数返回一个包含4个元素的元组,其中look[0]是encoder的函数引用,look[1]是decoder的函数引用,look[2] 是UTF-8编码方式的StreamReader类对象引用,look[3]是UTF-8编码方式的StreamWriter类对象引用。python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理。

qq_41314882的博客 3025

视觉-语言模型:BLIP与Flamingo如何理解图文?

视觉-语言模型:BLIP与Flamingo如何理解图文? ,人工智能,计算机视觉,大模型,AI,在当今人工智能飞速发展的时代,视觉 - 语言模型作为多模态领域的关键技术,正逐渐改变着我们与数字世界交互的方式。它们致力于打破图像与文本之间的模态壁垒,使计算机能够像人类一样,综合理解和处理视觉与语言信息。其中,BLIP 和 Flamingo 两款模型脱颖而出,以独特的架构和创新的训练方法,在图像描述生成、视觉问答、图文检索等任务中展现出卓越的性能。本文将深入剖析 BLIP 与 Flamingo 模型的工作原理。

不踩坑,不知道坑有多深;不总结,踩过的坑白踩。 4万+

Python标准库—codecs模块

codecs 常用函数 codecs.encode(obj, encoding='utf-8', errors='strict') 使用为 encoding 注册的编解码器对 obj 进行编码,类似str.encode()方法。 >>> codecs.encode("你好,world",encoding='ascii') Traceback (most recent call...

L_zzwwen的博客 4344

深入剖析RK3588系统休眠唤醒机制及驱动适配秘籍

本文深入探讨了RK3588嵌入式系统的休眠唤醒机制及驱动适配技术。首先分析了系统支持的两种休眠模式(Freeze浅度睡眠和Mem深度睡眠)及四种唤醒方式(GPIO中断、蓝牙事件、外设活动和定时器唤醒)的工作原理。重点介绍了驱动适配的三个关键环节:设备树配置要点、驱动代码实现与优化方法,以及驱动与内核电源管理的协同机制。通过GPIO按键唤醒和蓝牙唤醒两个实际案例,展示了具体实现过程并提供了常见问题的解决方案。文章为开发者提供了全面的技术参考,有助于优化系统功耗管理和响应性能,对嵌入式系统开发具有重要指导意义。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 433

C#上位机与西门子PLC全链路通信实战教程:数据采集+SQL存储+数据库报表查询+报警历史完整实现

在工业自动化领域,西门子PLC(S7-200Smart/1200/1500)凭借稳定的性能、强大的功能、完善的生态,稳居工业控制器的主流地位;而凭借开发效率高、界面美观、兼容性强、数据库操作便捷的优势,成为工业上位机开发的首选编程语言。二者的组合,是目前制造业、自动化产线、智能仓储、暖通自控等场景的绝对主流方案,也是工业上位机工程师必须吃透的核心技术栈。

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 1864

python编码问题之encode、decode、codecs模块

原文链接 先说说编解码问题 编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。 Eg: str1.decode('gb2312') #将gb2312编码的字符串转换成unicode编码 str2.encode('gb2312') #将unicode编码...

lingpy的博客 2352

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

Python标准库:codecs【专门做编码转换】【open()、encode()、decode()、lookup()、getencoder()】【读写文件codecs.open()优于open()】

codecs专门用作编码转换,当我们要做编码转换的时候可以借助codecs很简单的进行编码转换codecs模块提供一个open方法,三个参数encoding, errors, buffering,这三个参数都是可选参数,但是对于应用来说,需要明确指定encoding的值,而errors和buffering使用默认值即可。

u013250861的博客 6862

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python2编码问题解决_解决python2.x文件读写编码问题

python2.X版本在处理中文文件读写时经常会遇到乱码或者是UnicodeError错误,正如下面的程序所示:#coding=utf-8# test.txt是一个以gbk2312编码(简体中文windows系统中的默认文本编码)的文本文件# 文本写入with open('test.txt', 'a') as f:f.write('test') # 正常写入f.write('测试') # 正常写入...

weixin_39521068的博客 311

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

Python编码转换从入门到精通:decode与encode的正确使用姿势

掌握Python字符串编码难题,深入解析decode与encode的正确使用方法。涵盖常见编码格式、中英文处理场景及乱码解决方案,助你轻松实现字符转换与数据读写。实用技巧值得收藏。

CodeNexus的博客 765

python codecs.open_Python: open和codecs.open

python的编解码:input文件(gbk, utf-8...) ----decode-----> unicode-------encode------> output文件(gbk, utf-8...)很多文件处理的包是unicode编码,刚开始读入文件(gbk, utf-8...)后要decode为unicode编码格式,再encode为需要的格式(gbk, utf-8...

weixin_39887531的博客 176

python 乱码转码_Python解决乱码问题

解决python乱码问题字符串在python的内部采用unicode的编码方式,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码。编码是一种用二进制数据表示抽象字符的方式,utf8是一种编码方式。代码中的字符串编码默认和代码文件编码相同。decode的作用是将其他编码的字符串...

weixin_34496367的博客 1262

python 编码转换函数_python黑魔法之编码转换

我们在使用其他语言的库做编码转换时,对于无法理解的字符,通常的处理也只有两种(或三种):抛异常替换成替代字符跳过但是在复杂的现实世界中,由于各种不靠谱,我们处理的文本总会出现那么些不和谐因素,比如混合编码。在这种情况下,又回到了上面的处理办法。那么问题来了,python有没有更好地办法呢?答案是,有!python的编码转换流程实际上是两段式转换:source -> unicode -> dest首...

weixin_39989443的博客 314

Python编码

Python2.7中的str和unicode都是basestring的子类。str是字节串,是由unicode经过编码(encode)的字节组成的;unicode才是真正意义上的字符串,是由字符组成的。 basestring中有一下两个方法: encode():将unicode字符串转换为其他...

chuhuoru9638的博客 175

python json dump_python json.dumps中文乱码问题解决

json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3版本中不存在。注:下面的代码再python 2.7版本下测试通过# -*- coding: utf-8 -*-odata = {'a' : '你好'}print odata结果:{'a': '\xe4\...

weixin_39916479的博客 128

python文件怎么读中文csv-python读写csv时中文乱码问题解决办法

https://www.cnblogs.com/shengulong/p/7097869.htmlCSV是英文Comma Separate Values(逗号分隔值)的缩写,顾名思义,文档的内容是由 ",” 分隔的一列列的数据构成的,可以使用excel和文本编辑器等打开。CSV文档是一种编辑方便,可视化效果极佳的数据存储方式1、python读写、追加csv方法:"r’:只读(缺...

weixin_37988176的博客 1459

python写入csv老是乱码或者各种不好

存储为用逗号分隔符的文本文件 改文件后缀即可 这里有一个只是针对python2编码的详细介绍 https://www.cnblogs.com/phyger/p/9561283.html python2最大的坑在于中文编码问题,遇到中文报错首先加u,再各种encode、decode。 当list、tuple、dict里面有中文时,打印出来的是Unicode编码,这个是无解的。 对中文编码纠结...

何加焉的博客 1522

python json.dumps中文乱码问题解决

json.dumps(var,ensure_ascii=False)并不能解决中文乱码的问题 json.dumps在不同版本的Python下会有不同的表现, 注意下面提到的中文乱码问题在Python3版本中不存在。 注:下面的代码再python 2.7版本下测试通过 1 2 3 #-*-coding:utf-8-*- odata={'a':'你好'} printodata 结果: 1 ...

mm744的博客 253

python encode和decode函数说明

python encode和decode函数说明 字符串编码常用类型:utf-8,gb2312,cp936,gbk等。python中,我们使用decode()和encode()来进行解码和编码在python中,使用unicode类型作为编码的基础类型。即 decode encodestr ---------> unicode --------->str...

qq_37547241的博客 457

Python编解码

在Python解释器中字符串有两种类型:str、unicode。其中,unicode是默认的类型;而str则是unicode之外的其他类型,可能是ascII、gbk、utf-8等。unicode类型只存在于Python解释器中,当需要向外输出时需要将unicode类型转换成对应的str类型;而从外部读取数据时则需要从str类型转成unicode类型 ...

weixin_42857241的博客 487
上一篇: python的requests库简介
下一篇: 重要性采样(importance sampling)
geter_CS
博客等级 码龄10年 7311粉丝 118原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值