Answers:
在Python3中,文字字符串默认为unicode。
假设这text
是一个bytes
对象,只需使用text.decode('utf-8')
unicode
的Python2等效str
于Python3,因此您还可以编写:
str(text, 'utf-8')
若你宁可。
str
是unicode,即。它是“解码”,所以它是没有意义的调用decode
就可以了
str(text, 'utf-8')
,则文本必须是字符串二进制。例如str(b'this is a binary', 'utf-8')
所有文本均为Unicode;但是编码的Unicode表示为二进制数据
如果您想确保输出的是utf-8,请参考以下页面中unicode 3.0版本的示例:
b'\x80abc'.decode("utf-8", "strict")
作为一种解决方法,我一直在使用:
# Fix Python 2.x.
try:
UNICODE_EXISTS = bool(type(unicode))
except NameError:
unicode = lambda s: str(s)
try: unicode = str; except: pass
。
unicode = str
因为它不会在2或3失败
from six import u as unicode
我更喜欢它,仅仅是因为它比unicode = str
这就是我解决问题的方式,例如将\ uFE0F,\ u000A等字符转换为16字节编码的表情符号。
example = 'raw vegan chocolate cocoa pie w chocolate & vanilla cream\\uD83D\\uDE0D\\uD83D\\uDE0D\\u2764\\uFE0F Present Moment Caf\\u00E8 in St.Augustine\\u2764\\uFE0F\\u2764\\uFE0F '
import codecs
new_str = codecs.unicode_escape_decode(example)[0]
print(new_str)
>>> 'raw vegan chocolate cocoa pie w chocolate & vanilla cream\ud83d\ude0d\ud83d\ude0d❤️ Present Moment Cafè in St.Augustine❤️❤️ '
new_new_str = new_str.encode('utf-16', 'surrogatepass').decode('utf-16')
print(new_new_str)
>>> 'raw vegan chocolate cocoa pie w chocolate & vanilla cream😍😍❤️ Present Moment Cafè in St.Augustine❤️❤️ '
python 3.x中最简单的方法
text = "hi , I'm text"
text.encode('utf-8')