补充:pyhton 2 和3中的beyts类型

时间:2023-03-09 17:13:30
补充:pyhton 2 和3中的beyts类型

在python2里,bytes == str

python2里还有个单独的类型是unicode , 把字符串解码后,就会变成unicode.

既然python2中byets == str,那为什么还要有bytes类型呢?

答:因为要表示图片,视频等二进制格式的数据.

在python2中,如何定义一个Unicode类型的数据呢?

s = u"中国"  # 这样就定义了一个Unicode类型的数据.

在python2中以utf-8,gbk 或其他编码编写的代码,加载的内存中,依然是原来的编码类型.不会变化

在python3中以utf-8,gbk 或其他编码编写的代码,加载的内存中,会自动转换成unicode

unicode 和 utf-8的关系:

  • Unicode 是「字符集」 包含全球所有字符的对应关系的一个字符集合.Unicode 是一个标准,定义了一个字符集以及一系列的编码规则,即 Unicode 字符集和 UTF-8、UTF-16、UTF-32 等等编码
  • UTF-8 是「编码规则」只是一个编码规则.

当文件保存为unicode格式后,文件在全球其他电脑上就可以正常显示了.因为Unicode会自动把文件的数据类型转换为使用者电脑编码的类型来显示.

PY3 除了把字符串的编码改成了unicode, 还把str 和bytes 做了明确区分, str 就是unicode格式的字符, bytes就是单纯二进制啦。

py3 str = py2 unicode

最后再提示一下,Python只要出现各种编码问题,无非是哪里的编码设置出错了
常见编码错误的原因有:

      • Python解释器的默认编码
      • Python源文件文件编码
      • Terminal使用的编码
      • 操作系统的语言设置