python字符串编码解码基础知识

python字符串编码解码基础知识

python通过ord©获取字符c的unicode的编码值,为整数。通过chr(i)获取i对应的unicode的字符。通过str.encode()将字符串编码为原始字节,b.decode()将原始字节解码为字符串。

1 字符串基础知识

python通过ord©获取字符c的unicode的编码值,为整数。

通过chr(i)获取i对应的unicode的字符。

1.1 字符编码方法

ASCII码定义0-127的字符代码,每个字符存储在一个8位的字节中。

# 内置函数 描述
1 ord© 返回字符c的unicode的编码值,为整数
2 chr(i) 返回unicode编码为i的字符
3 help(encodings) 先import encodings,再help,查看python支持的编码名称

从字符串编码为原始字节,从原始字节解码字符串。

# 名称 描述
1 编码 根据编码名称,把字符串翻译为原始字节
2 解码 根据编码名称,把原始字节翻译为字符串

示例

python 复制代码
>>> ord('梯')
26799
>>> chr(26799)
'梯'

1.2 python字符串类型

# 版本 描述
1 py2.x str表示8位文本和二进制数据
2 unicode表示宽字符unicode文本
3 py3.x str表示unicode文本
4 bytes表示二进制数据
5 bytearray,可变的bytes类型

1.3 文本和二进制文件

# 模式 描述
1 bytes和二进制模式 处理图像文件、解压的打包数据、设备数据流
2 str和文本模式 用于程序输出、HTML、CSV、XML文件

2 python3.0的字符串应用

2.1 常量和基本属性

# 项目 描述
1 'xxx'和"xxx" 创建str,单字节或者更长的字节,存放字符串
2 '''xxx'''和"""xxx""" 创建str
3 'xxx'和"xxx"前面加b或B 创建bytes,单字节,存放字符对应原始字节的整数
4 '''xxx'''和"""xxx"""前加b或B 创建bytes

示例

python 复制代码
>>> b=b'abc' # 返回每个字符的原始字节的整数
>>> s='abc'
>>> type(b),type(s)
(<class 'bytes'>, <class 'str'>)
>>> b,s
(b'abc', 'abc')
>>> b[0],s[0]
(97, 'a')
>>> b[1:],s[1:]
(b'bc', 'bc')
>>> list(b),list(s)
([97, 98, 99], ['a', 'b', 'c'])
# bytes 和 str 不可修改
>>> b[0]='d'
Traceback (most recent call last):
  File "<pyshell#32>", line 1, in <module>
    b[0]='d'
TypeError: 'bytes' object does not support item assignment
>>> s[0]='d'
Traceback (most recent call last):
  File "<pyshell#33>", line 1, in <module>
    s[0]='d'
TypeError: 'str' object does not support item assignment
>>> c=b'''
abc
def
'''
>>> c
b'\nabc\ndef\n'

2.2 转换

# 项目 描述
1 str.encode()和 bytes(s,encoding) 编码,把字符串转换为bytes形式,根据str创建一个bytes。
2 bytes.decode()和 str(b,encoding) 解码,把bytes转换为字符串形式,根据bytes创建一个str。
3 sys.getdefaultencoding() 查看系统默认编码

描述

str.encode(encoding),根据编码名encoding将字符串str编码为原始字节,encoding默认为utf-8。

bytes(s,encoding),根据编码名encoding将字符串s编码为原始字节,encoding必填。

bytes.decode(encoding),根据编码名encoding将原始字节解码为字符串,encoding默认为utf-8。

str(b,encoding),根据编码名encoding将原始字节解码为字符串,encoding不填则打印原始字节。

示例

python 复制代码
>>> import sys
# 查看系统
>>> sys.platform
'win32'
# 查看系统默认编码
>>> sys.getdefaultencoding()
'utf-8'
>>> s='梯'
# encode 和 bytes 编码,字符串转原始字节
>>> s.encode()# encoding 默认为 utf-8
b'\xe6\xa2\xaf'
>>> s.encode(encoding='utf-8')
b'\xe6\xa2\xaf'
>>> s.encode(encoding='gbk')
b'\xcc\xdd'
>>> bytes(s,encoding='gbk')
b'\xcc\xdd'
>>> bytes(s,encoding='utf-8')
b'\xe6\xa2\xaf'
# decode 和 str 解码,原始字节转字符串
>>> b=b'\xe6\xa2\xaf'
>>> b.decode()
'梯'
>>> str(b,encoding='utf-8')
'梯'
# str() 没有 encoding ,则 进行打印
>>> str(b)
"b'\\xe6\\xa2\\xaf'"
# bytes() 没有 encoding ,则 报错
>>> bytes(s)
Traceback (most recent call last):
  File "<pyshell#62>", line 1, in <module>
    bytes(s)
TypeError: string argument without an encoding
相关推荐
liuzhenghua662 小时前
Python任务调度模型
java·运维·python
小前端大牛马2 小时前
java教程笔记(十一)-泛型
java·笔记·python
sjtu_cjs2 小时前
Tensorrt python api 10.11.0笔记
开发语言·笔记·python
哆啦A梦的口袋呀2 小时前
深入理解系统:UML类图
开发语言·python·uml
虎冯河2 小时前
怎么让Comfyui导出的图像不包含工作流信息,
开发语言·python
葬爱家族小阿杰3 小时前
python执行测试用例,allure报乱码且未成功生成报告
开发语言·python·测试用例
xx155802862xx3 小时前
Python如何给视频添加音频和字幕
java·python·音视频
酷爱码3 小时前
Python实现简单音频数据压缩与解压算法
开发语言·python
花果山总钻风4 小时前
SQLAlchemy 中的 func 函数使用指南
python
知识中的海王4 小时前
Python html 库用法详解
开发语言·python