Saya menggunakan ini:
u = unicode(text, 'utf-8')
Tetapi mendapatkan kesalahan dengan Python 3 (atau ... mungkin saya lupa memasukkan sesuatu):
NameError: global name 'unicode' is not defined
Terima kasih.
Saya menggunakan ini:
u = unicode(text, 'utf-8')
Tetapi mendapatkan kesalahan dengan Python 3 (atau ... mungkin saya lupa memasukkan sesuatu):
NameError: global name 'unicode' is not defined
Terima kasih.
Jawaban:
String literal adalah unicode secara default di Python3.
Dengan asumsi itu
text
adalah sebuahbytes
objek, gunakan sajatext.decode('utf-8')
unicode
Python2 setara denganstr
di Python3, jadi Anda juga bisa menulis:jika kamu memilih.
sumber
str
adalah unicode, yaitu. itu "diterjemahkan" sehingga tidak masuk akal untuk memanggildecode
di atasnyastr(text, 'utf-8')
, teks harus berupa string biner. misalnyastr(b'this is a binary', 'utf-8')
Apa yang baru di Python 3.0 mengatakan:
Jika Anda ingin memastikan Anda mengeluarkan utf-8, berikut adalah contoh dari halaman ini di unicode di 3.0 :
sumber
Sebagai solusinya, saya telah menggunakan ini:
sumber
try: unicode = str; except: pass
.unicode = str
karena tidak akan gagal dalam 2 atau 3from six import u as unicode
yang saya lebih suka hanya karena ini lebih mendokumentasikan diri (karena enam adalah lapisan kompatibilitas 2/3) daripadaunicode = str
Ini bagaimana saya memecahkan masalah saya untuk mengonversi karakter seperti \ uFE0F, \ u000A, dll. Dan juga emoji yang dikodekan dengan 16 byte.
sumber
Dalam program Python 2 yang saya gunakan selama bertahun-tahun ada baris ini:
Ini tidak berhasil dengan Python 3.
Namun, program tersebut ternyata berhasil dengan:
Saya tidak ingat mengapa saya meletakkan unicode di tempat pertama, tetapi saya pikir itu karena namanya dapat berisi huruf Swedia åäöÅÄÖ. Tetapi bahkan mereka bekerja tanpa "unicode".
sumber
cara termudah di python 3.x
sumber