我需要在使用它之前对一串文本进行编码,但唯一的问题是它是一个变量而且我所知道的通常是我会使用b'string'。我假设我会使用variable.encode(),但我会使用什么编码?
编辑:对不起,我误解了这个问题,克里斯蒂安的回答帮助我意识到发生了什么。感谢大家的帮助。答案 0 :(得分:2)
嗯,您必须决定使用哪种编码。您可以使用UTF-8作为合理的默认值,也可以从环境中推断出编码。
环境可以是,例如:
sys.getfilesystemencoding()
功能然后,您可以通过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'前缀。
字节文字总是以' b'为前缀。或者' B&#39 ;;它们生成字节类型的实例而不是str类型。他们可能只是 包含ASCII字符;数字值为128或更大的字节 必须用逃避来表达。
烧瓶错误是一个问题,因为字符串未以UTF-8编码。
将其编码为:
your_string = your_string.encode('utf8')
有关此问题的更多详细信息,请查看报告的github问题here。