python编码


  • 版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kun1280437633/article/details/80640292
1、字符集

  • ascii
  • ISO-8859-1 通常叫 做Latin-1,向下兼容ASCII,此字符集支持部分于欧洲使用的语言
  • GB2312/GBK 这就是汉字的国标码,专门用来表示汉字,是双字节编码,而英文字母和iso8859-1一致(兼容iso8859-1编码)。其中gbk编码能够用来同时表示繁体字和简体字,而gb2312只能表示简体字,gbk是兼容gb2312编码的。
  • unicode 万国码

2、Unicode与UTF之间的关系

  • UTF Unicode Transformation Format,通用传输格式
  • UTF-8 8-bit Unicode Transformation Format

UTF-8 是一种 Unicode 的编码方式,主要作用对 Unicode 码的数据进行转换,转换后方便存储和网络传输


3、python3中的字节串与字符串之间的区别

    字节串(二进制数据,bytes) utf8

    字符串(Unicode码数据,2个字节作为一个字)

demo:

a = '中文'    type(a)=> str    len(a) = 2

>>> f = open('./1.txt','w')
>>> f.write(a)
2

>>> f = open('./1.txt','w',encoding='utf-8')
>>> f.write('中文aaa中文')
2

f = open('./1.txt','r')
data = f.read()

print(data)       #  中文aaa中文  类型 字符串  长度7

f = open('./1.txt','rb')
data2 = f.read()
print(type(data2))           #  <class 'bytes'>
print(len(data2))             # 15   utf-8编码的二进制一个汉字占3个字节,英文一个字节
print(data2)                    # b'\xe4\xb8\xad\xe6\x96\x87aaa\xe4\xb8\xad\xe6\x96\x87'

网络请求传输过来的存储

content_bytes = response.read() # utf-8
content = content_bytes.decode('utf-8')

# 'wb' 表示 二进制写入
with open('sample1.html','wb') as f:
     f.write(response.read())

# 'w' 表示字符串写入
str = response.read().decode('utf-8')
with open('sample2.html','w',encoding='utf-8') as f:     # encoding以什么样的方式写入
    f.write(str)

4、python3中编码

    二进制 -> 转换 -> 字符串 需要解码 decode

    字符串 -> 转换 -> 二进制 需要解码 encode

    python3 内存中使用的字符串全部是 unicode 码,但是网络传输的数据或者从磁盘读取的数据是把 unicode 码转换过的数据,通常情况下可能是 utf-8 格式的数据,所以如果从网络中读取或者磁盘中读取其实就是把 utf-8 格式的数据解码成 unicode 码数据,相反如果想把内存中 unicode 码数据存储到磁盘或者网络中需要对 unicode 码进行编码,通常可以采用 utf-8 的形式进行编码

5、编码总结


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值