Tôi sử dụng này:Làm thế nào để làm cho chuỗi unicode với python3
u = unicode(text, 'utf-8')
Nhưng nhận lỗi với Python 3 (hoặc ... có lẽ tôi chỉ quên bao gồm một cái gì đó):
NameError: global name 'unicode' is not defined
Cảm ơn bạn .
Tôi sử dụng này:Làm thế nào để làm cho chuỗi unicode với python3
u = unicode(text, 'utf-8')
Nhưng nhận lỗi với Python 3 (hoặc ... có lẽ tôi chỉ quên bao gồm một cái gì đó):
NameError: global name 'unicode' is not defined
Cảm ơn bạn .
chuỗi Literal là unicode theo mặc định trong Python3
Giả sử văn bản được một đối tượng bytes
, chỉ cần sử dụng text.decode('utf-8')
unicode
của python2 tương đương với str
trong Python3, vì vậy bạn cũng có thể viết
str(text, 'utf-8')
nếu bạn thích
All text is Unicode; however encoded Unicode is represented as binary data
Nếu bạn muốn đảm bảo bạn đang cung cấp utf-8, sau đây là một ví dụ từ trang này trên unicode in 3.0:
b'\x80abc'.decode("utf-8", "strict")
đây chính xác là những gì chúng tôi cần cho '\ x80abc'.decode ("utf-8", "strict") trong Python 2, cảm ơn – hylepo
Là một workaround, tôi đã sử dụng này:
# Fix Python 2.x.
try:
UNICODE_EXISTS = bool(type(unicode))
except NameError:
unicode = lambda s: str(s)
Tại sao bạn sử dụng hàm lambda? Những phương pháp này được gọi là cùng một cách trong mọi trường hợp. Đây là một biến thể đơn giản: 'try: unicode = str; ngoại trừ: pass'. –
Nếu có lý do tuyệt vời để nâng cấp lên python 3, đó là unicode theo mặc định. – JBernardo