Python的字符串和编码

本文深入浅出地介绍了字符编码的基本概念,包括ASCII码、Unicode编码及其变种如UTF-8等,并探讨了这些编码在Python中的应用。同时,还解释了Python 2与Python 3在处理字符串方面的差异。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

字符编码

字符编码一直是个很基础,但又很容易让人模棱两可的问题,不弄清楚的话,随时会给你刷一波存在感,让你很头痛。

下面就简洁的说下编码的各个概念:

编码介绍

ASCII码:用一个字节中的存储的数字代表每个字符的编码

显然要表示除英文外诸如汉族日文等字符很无力,因此最简单粗暴的增加字节数,就有了Unicode编码

Unicode码:用四个字节中存储的数字代表每个字符的编码,主要编程语言都默认使用Unicode码:

但是人们觉得以前用ASCII码表示的字符,再用Unicode码表示太浪费空间,就出现了各种Unicode码的变种,它们一个重要特点就是同一个字符的编码是和Unicode编码相同,只是存储的形式不同

UTF-8:Unicode最通用的一种变种,用一到四个字节中存储的数字代表每个字符的编码

UTF-8是个很好的东西,它兼顾了Unicode和ASCII的优点,在能对所有字符进行编码的基础上尽可能的节省了空间。

GB2312/GBK: 中文的特殊编码,兼容ASCII码

乱码正是由于各个文字自己独特的编码导致的,比如上面的GBK等等。

Python字符串

Python2中的字符串:
1. str:其实更形象的应该称为——字节串
2. unicode:以unicode编码的真正的字符串,以字母’u’打头

Python3中的字符串:
1. str:unicode编码的字符串
2. bytes:对应python2中的str——字节串,以字母’b’打头

两种字符串的转换关系:

字节串(解码) —> 字符串 bytes.decode(‘utf-8’)
字符串(编码) —> 字节串 str.encode(‘utf-8’)

代码文件的编码
# -*- coding: utf-8 -*-
此声明指示代码文件的编码
如果没有此文件编码类型的声明,则默认以ASCII编码去处理
文件的读写

Python2:
读取文件的结果为str类型的字节串,不会修改编码,写入时原样写入字节串。

Python3中的字符串:
读取文件的结果为str类型的并自动转化为unicode编码的字符串,写入的时候自动转化为文件的编码
rw-file-utf-8

其他

将内容为unicode形式的字符串,转换成真正的unicode字符串需要使用:str.decode(‘unicode-escape’)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值