Theme-Logo
    • 通知公告
  • [登录]/[注册]
  • D 返回首页
python3编程学习
  • 基础教程
    • 初识python
    • 语法特点
    • 输入输出
    • 运算符+
    • 数据类型
    • 类型转换
    • 条件控制
    • 循环语句
    • 函数详解
    • 面向对象
    • 模块详解
    • File(文件)
    • 字符串初级
    • 字符串进阶
    • 错误和异常
  • 高级教程
    • 数据库深操作
    • web网站开发
    • GUI界面开发
    • 网络爬虫开发
    • 游戏高级开发

字符串编码转换

在Python 3X中,默认来用的编码格式为UTF-8,采用这种编码有效地解决了中文乱码的问题。
  • 返回首页

在Python 3.X中,默认来用的编码格式为UTF-8,采用这种编码有效地解决了中文乱码的问题。在Python 中,有两种常用的字符串类型,分别为 str 和 bytes。其中,str 表示 Unicode 字符 (ASCII或者其他); bytes 表示二进制数据(包括编码的文本)。这两种类型的字符串不能拼接在一起使用。通常情況下,str 在内存中以 Unicode 表示,一个字符对应若干个字节。但是如果在网络上传输,或者保存到磁盘上,就需要把 str 转换为字节类型,即 bytes 类型。

bytes 类型的数据是带有b前缀的字符串(用单引号或双引号表示),例如,b'xd2\xb0'和b'mr'都是 bytes 类型的数据。

str 类型和 bytes 类型之间可以通过encode() 和 decode() 方法进行转换,这两个方法是互逆的过程。

1. 使用 encode() 方法编码

encode() 方法为str对象的方法,用于将字符串转换为二进制数据(即bytes),也称为“编码”,其语法格式如下:

str.encode([encoding="utf-8"][,errors="strict"])

参数说明

str:表示要进行转换的字符串

encoding="utf-8":可选参数,用于指定进行转码时采用的字符编码,默认为UTF-8,如果想使用简体中文,也可以设置为gb2312。当只有这一个参数时,也可以省略前的“encoding=”,直接写编码。

errors="strict":可选参数,用于指定错误处理方式,其可选择值可以是strict(遇到非法字符就抛出异常)、ignore(忽略非法字符)、replace(用“?”替换非法字符)或xmlcharrefreplace(使用 XML 的字符引用)等,默认值为 strict。

在使用 encode() 方法时,不会修改原字符串,如果需要修改原字符串,需要对其进行重新赋值。

例如,定义一个字符串,然后使用 encode() 方法将其采用 GBK 编码转换为二进制数,并输出原字符串和转换后的内容,代码如下:

str = "我爱学习"
byte = str.encode('GBK')  #采用GBK编码转换为二进制数据
byte2 = str.encode()      #采用UTF-8编码转换为二进制数据
print("原字符串:",str) #输出 我爱学习
print("新字符串1:",byte)
# 输出 新字符串1:b'\xce\xd2\xb0\xae\xd1\xa7\xcf\xb0'
print("新字符串2:",byte2)
# 输出 新字符串2:b'\xe6\x88\x91\xe7\x88\xb1\xe5\xad\xa6\xe4\xb9\xa0'

2. 使用 decode() 方法解码

decode() 方法为 bytes 对象的方法用于将二进制数据转换为字符串,即将使用 encode() 方法转换的结果再转换为字符串,也称为“解码”。语法格式如下:

bytes.decode([encoding="utf-8"][,errors="strict"])

参数说明:

    本文未完全显示,开通会员查看全文......

回顶部