如何使用 python3生成 unicode 字符串

我用了这个:

u = unicode(text, 'utf-8')

但是在使用 Python3时出现了错误(或者... 也许我只是忘了包含一些内容) :

NameError: global name 'unicode' is not defined

谢谢你。

253790 次浏览

在 Python 3中,文字字符串默认为 unicode。

假设 textbytes对象,只需使用 text.decode('utf-8')

Python2的 unicode等效于 Python3中的 str,因此您还可以编写:

str(text, 'utf-8')

如果你愿意的话。

作为一个变通方案,我一直在使用这个:

# Fix Python 2.x.
try:
UNICODE_EXISTS = bool(type(unicode))
except NameError:
unicode = lambda s: str(s)

在我使用了多年的 Python 2程序中有这样一行:

ocd[i].namn=unicode(a[:b], 'utf-8')

这在 Python3中不起作用。

然而,这个项目最终证明是有效的:

ocd[i].namn=a[:b]

我不记得为什么我把 Unicode 放在首位,但我认为这是因为名称可以包含瑞典字母 åäöÅÄÖ。但即使没有“ Unicode”,它们也能工作。

这就是我如何解决我的问题转换字符,如 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', errors='surrogatepass').decode('utf-16')
print(new_new_str)
>>> 'raw vegan chocolate cocoa pie w chocolate & vanilla cream😍😍❤️ Present Moment Cafè in St.Augustine❤️❤️ '