• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
蓝冰蝶
博客园    首页    新随笔    联系   管理    订阅  订阅
编码

一、is和==的区别

  is比较内存地址,id( )获取内存地址

  ==比较两边的值

s1 = "哈哈"
s2 = "哈哈"
print(s1 == s2) # True
print(s1 is s2) # True 原因是有小数据池的存在 导致两个变量指向的是同一个对象
l1 = [1, 2, 3]
l2 = [1, 2, 3]
print(l1 == l2) # True, 值是一样的
print(l1 is l2) # False, 值是假的

  小数据池:
      1、给数字和字符串使用,其他数据类型数据不存在
         数字小数据池的范围 -5 ~ 256 每次都使用同一个对象      

      2、如果是纯文字信息和下划线,那么这个对象会被添加到小数据池

         字符串中不能包含特殊符号,如果有特殊字符他们的内存地址就不一样

         字符串中单个*20以内他们的内存地址一样,单个*21以上内存地址不一致

二、编码和解码
  encode(编码方式) ---- 拿到明文编码后对应的字节

  字符串在传输时转化成bytes=> encode(字符集)来完成

s = "alex"
print(s.encode("utf-8")) # 将字符串编码成UTF-8
print(s.encode("GBK")) # 将字符串编码成GBK
结果:
b'alex'
b'alex'
s = "中" print(s.encode("UTF-8")) # 中文编码成UTF-8 print(s.encode("GBK")) # 中文编码成GBK 结果: b'\xe4\xb8\xad' b'\xd6\xd0'

  decode(编码方式) -----将编码后的字节解码成对应的明文

s = "我叫李嘉诚"
print(s.encode("utf-8")) #b'\xe6\x88\x91\xe5\x8f\xab\xe6\x9d\x8e\xe5\x98\x89\xe8\xaf\x9a'

print(b'\xe6\x88\x91\xe5\x8f\xab\xe6\x9d\x8e\xe5\x98\x89\xe8\xaf\x9a'.decode("utf-8")) # 解码

注意: 用什么进行编码就要什么进行解码 不然后会懵逼!

s = "我是文字"
bs = s.encode("GBK") # 我们这样可以获取到GBK的文字
# 把GBK转换成UTF-8
# 首先要把GBK转换成unicode. 也就是需要解码
s = bs.decode("GBK") # 解码
# 然后需要进⾏重新编码成UTF-8
bss = s.encode("UTF-8") # 重新编码
print(bss)

  ASCII 码

    不支持 中文
    支持 英文 数字 符号

    8位 一个字节

  gbk码 国标:
    支持 中文,英文,数字,符号
    英文 16位 二个字节
    中文 16位 二个字节
  unicode 万国码
    支持 中文,英文,数字,符号
    英文 32 位 四个字节
    中文 32位 四个字节
  utf-8 长度可变的万国码 最少用8位
    英文 8位 一个字节
    中文 24位 三个字节
Python3中 程序运行阶段 使用的是unicode 显示所有的内容
bytes类型
传输和存储都是使用bytes
pycharm 存储的时候默认是使用utf-8
注意: pycharm是个坑, 一个py文件中所有相同的字符串 一般都是使用一样的内存地址

posted on 2018-08-02 19:19  蓝冰蝶  阅读(179)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3