编码学习 笔记


编码有
    ascii码
        没有中文 只有英文
            A - 00000010    一个字节 8位
    unicode
            A - 00000000 00000001 00000010 00000100     4个字节  32位 
            中 - 00000000 00000001 00000010 00000110     4个字节  32位  
    utf-8
            A - 0010 0000    一个字节 8位
            中 - 0000001 00000010 00000110    24位  3个字节
    gbk
            A - 00000010    一个字节 8位
            中 - 00000010 00000110    16位  2个字节
            
1,各个编码之间的二进制,是不能互相识别的,会产生乱码
2,文件的传输和储存都是二进制,但不是Unicode,因为32位储存一个字符,占空间多

python3的字符串在内存中是用unicode编码的,导致传输和储存要转换。


====================
# 对于中文
# str 编码方式:unicode
# bytes 编码方式 utf-8 gbk等

# str 表现形式 s = "abc"
#     编码方式 01010101 unicode
# bytes 表现形式 s = b"abc"
#       编码方式 00101010 utf-8 gbk等

# s1 = 'abc'
# s2 = b'abs'
# print(s1, type(s1))
# print(s2, type(s2))
# abc <class 'str'>
# b'abs' <class 'bytes'>


# 对于英文
# str 编码方式:unicode
# bytes 编码方式 utf-8 gbk等

# str 表现形式 s = "中"
#     编码方式 01010101 unicode
# bytes 表现形式 s = b"x\e91\e91\e01\e21\e31\e32"
#       编码方式 00101010 utf-8 gbk等


# s1 = '中'
# s2 = b'中'
# print(s1, type(s1))
# print(s2, type(s2))
    # SyntaxError: bytes can only contain ASCII literal characters.
    # py3的bytes中文表现不出来


# ===============

# 英文
# str转化bytes
s1 = 'abc'
s2 = s1.encode()
print(s1, type(s1))
print(s2, type(s2))
    # abc <class 'str'>
    # b'abc' <class 'bytes'>
    # 转化后就可以传输和储存

# 中文
s1 = '中'
s2 = s1.encode("utf-8")
print(s1, type(s1))
print(s2, type(s2))
    # 中 <class 'str'>
    # b'\xe4\xb8\xad' <class 'bytes'>
    # 转化后就可以传输和储存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值