在使用字符串之前,我需要对其进行编码,但唯一的问题是这是一个变量,而且我只知道通常情况下我会使用b'string'。
我猜应该使用variable.encode(),但应该使用哪种编码呢?
编辑:抱歉,我误解了问题,Christian的答案帮助我意识到了问题所在。感谢所有人的帮助。
在使用字符串之前,我需要对其进行编码,但唯一的问题是这是一个变量,而且我只知道通常情况下我会使用b'string'。
我猜应该使用variable.encode(),但应该使用哪种编码呢?
编辑:抱歉,我误解了问题,Christian的答案帮助我意识到了问题所在。感谢所有人的帮助。
你需要决定使用哪种编码方式。你可以选择UTF-8作为合理的默认值,也可以从环境中推断出编码方式。
环境可能包括:
sys.getfilesystemencoding()
函数然后,您可以通过var.encode(encoding)
将Unicode变量转换为字节字符串。
还可以查看Python Unicode HOWTO。
b'string'
这样的变量不需要进行编码处理,因为它会被忽略。而在Python 3.3中,它被用来将字符串编码为字节。我从NPE的精彩回答中学到了这一点,该回答对此进行了更详细的解释:
引用Python 2.x文档:
在Python 2中,前缀'b'或'B'被忽略;它表示该文字串应在Python 3中成为字节文字串(例如,当使用2to3自动转换代码时)。 'u'或'b'前缀后面可以跟一个'r'前缀。
Python 3.3文档指出:
字节文字串始终以'b'或'B'为前缀; 它们生成bytes类型的实例而不是str类型。 它们只能包含ASCII字符; 具有128或更大数值的字节必须用转义表示。
Flask错误是因为字符串未以UTF-8编码引起的问题。
像这样进行编码:
your_string = your_string.encode('utf8')
若想了解更多相关细节,请查看已报告的Github问题这里。