什么是变量上的b'string?

时间:2014-04-15 00:52:00

标签: python python-2.7

我需要在使用它之前对一串文本进行编码,但唯一的问题是它是一个变量而且我所知道的通常是我会使用b'string'。我假设我会使用variable.encode(),但我会使用什么编码?

编辑:对不起,我误解了这个问题,克里斯蒂安的回答帮助我意识到发生了什么。感谢大家的帮助。

2 个答案:

答案 0 :(得分:2)

嗯,您必须决定使用哪种编码。您可以使用UTF-8作为合理的默认值,也可以从环境中推断出编码。

环境可以是,例如:

然后,您可以通过var.encode(encoding)将Unicode变量转换为字节字符串。

另请查看Python Unicode HOWTO

答案 1 :(得分:0)

您无需对b'string'之类的变量进行任何编码,因为它被python 2.7忽略。它用于在python 3.3

中将字符串编码为字节

我是通过NPE从great answer了解到的,这更详细地解释了这一点:

  

引用the python 2.x documentation

     
    

' b'的前缀或者' B'被忽略了     Python 2;它表明了     literal应该成为字节文字     在Python 3中(例如,当代码是     自动转换为2to3)。一个     ' U'或者' b'前缀可以跟着     一个' r'前缀。

  
     

python 3.3 documentation州:

     
    

字节文字总是以' b'为前缀。或者' B&#39 ;;它们生成字节类型的实例而不是str类型。他们可能只是     包含ASCII字符;数字值为128或更大的字节     必须用逃避来表达。

  

烧瓶错误是一个问题,因为字符串未以UTF-8编码。

将其编码为:

your_string = your_string.encode('utf8') 

有关此问题的更多详细信息,请查看报告的github问题here