python学习(5)字符串和编码

时间:2023-01-05 19:10:27

一、编码的历史

第一种,ASCII码,最初只有127个字符被编码到计算机里,包含数字,字母,一些字符,占一个字节


第二种,GB2312码,把中文编进去,占两个字节。别的国家还有其他编码。

你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。


第三种,Unicode编码,把所有的语言都统一编码,一般两个字节表示一个字符,特别复杂的字符采用到4个字节

一个字母,ASCII编码一个字节,Unicode编码2个字节,这样占用存储空间


第四种,Utf-8编码,可变长的,通常一个字母编码一个字节,一个中文3个字节,只有很生僻的字符才4-6字节。其实ASCII编码是Utf-8的一部分


所以在计算机内存中统一使用Unicode编码,需要保存到硬盘或者需要传输的时候,就转换为Utf-8编码

python学习(5)字符串和编码

python学习(5)字符串和编码


二、python的字符串

在py3中使用unicode编码

1、单个字符的编码

ord('A')   //65

ord('中')  //20013

chr(66)   //'B'

chr(25991)  //'文'


'\u4e2d\u6587'   //‘中文’


2、py字符串保存在unicode表示,一个字符对应若干个字符,如果要在网络上传输,欧洲保存在磁盘上,就需要把str变成字节为单位的bytes

bytes类型的数据将用b前缀表示,无法表示为ASCII字符的字节,使用\x##表示

unicode---bytes

‘ABC’.encode('ascii')     //b‘ABC'

'中文'.encode('utf-8')  //b'\xe4\xb8\xad\x96\x87'


但是中文字符不能ascii编码方式,转换成bytes


3、len()计算字符个数


4、文件编码方式

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

5、格式化,使用%实现  ,%%表示输出%

%d   整数

%f    浮点数

%s   字符串

%x   十六进制整数

‘age:%d’ %23   //age:23