【问题标题】:Difference between binary string, byte string, unicode string and an ordinary string (str)二进制字符串、字节字符串、unicode字符串和普通字符串(str)的区别
【发布时间】:2011-11-21 22:55:13
【问题描述】:

我有点困惑。在 Python 中,二进制字符串、字节字符串、unicode 字符串和普通旧字符串 (str) 有什么区别?我正在使用 Python 2.6。

【问题讨论】:

  • 您应该指定您使用的是 Python 2 还是 Python 3,因为它有很大的不同。
  • 您使用的是哪个 Python 版本?在 Python 的上下文中,您是在哪里遇到“二进制字符串”这个术语的?
  • @JohnY 我已经更新了问题。
  • @SvenMarnach 我正在使用 Python 2.6。我想将字符串转换为二进制数据,这就是我遇到这个术语的时候。

标签: python


【解决方案1】:

这取决于您使用的 Python 版本。

在 Python 2.x 中,如果您编写 'abc',它的类型为 str,但这意味着一个字节字符串。如果你想要一个 Unicode 字符串,你必须写 u'abc'

在 Python 3.x 中,如果您编写 'abc',它仍然具有 str 类型,但现在这意味着它是一串 Unicode 字符。如果你想要一个字节串,你必须写b'abc'。不允许写u'abc'

        |  2.x                     |  3.x
--------+--------------------------+-----------------------
Bytes   |  'abc' <type 'str'>      |  b'abc' <type 'bytes'>
Unicode | u'abc' <type 'unicode'>  |   'abc' <type 'str'>

【讨论】:

  • 谢谢。就这样我理解正确,基本上字节串和普通字符串的区别就是字节串不能包含unicode字符?
  • @Imran Azad:您可以将字节字符串视为字节的有序列表——即介于 0 和 255 之间的整数。 Unicode 字符串是 Unicode 字符(字母、数字、标点符号、小雪人 (☃) 等)的有序列表。我认为混乱来自 Python 2.x 将字节字符串视为字符串。这几乎可以工作,除非您开始使用 ASCII 范围之外的字符时会遇到问题。
  • bytes 也存在于 2.x 中,但是是 str 的同义词。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-05-09
  • 2021-03-30
  • 1970-01-01
  • 1970-01-01
  • 2012-04-21
  • 2014-07-12
相关资源
最近更新 更多