2012-04-20 46 views
8

Tôi gặp sự cố với Python bằng Unicode. Tôi cần vẽ đồ thị với chú thích Unicode trong đó. Theo số tutorial tôi chỉ cần tạo chuỗi của mình bằng Unicode. Tôi làm như sau:Python: Tạo chuỗi Unicode

annotation = u"%s has %s rev"%(art.title, len(art.revisions)) 

Đó là art.title có ký tự Unicode trong đó. Đôi khi mã đó hoạt động, đôi khi nó mang lại cho tôi lỗi bên dưới:

UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128) 

Làm cách nào để khắc phục?

EDIT: Tôi có lỗi chính xác sau khi "chú thích" dòng:

File "script.py", line 195, in test_trie 
annotation = u"%s has %s rev"%(art.title, len(art.revisions)) 
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 19: ordinal not in range(128) 
+1

'Art.title' đến từ đâu? –

+0

Bạn có chắc là thông báo lỗi được cung cấp cho dòng mã bạn đã cung cấp cho chúng tôi không? Tôi nghi ngờ lỗi thực sự xảy ra khi bạn in ra 'chú thích'. Trong trường hợp đó, bạn có thể hiển thị dòng mã đó không? – jogojapan

+0

@jogojapan có, xem chỉnh sửa cho câu hỏi. – ashim

Trả lời

5

Tôi nghĩ rằng nó phụ thuộc nếu tiêu đề của bạn có một ký tự unicode hay không.

tôi sẽ cố gắng thêm art.title.encode("utf-8") hoặc art.title.decode("utf-8") và xem làm thế nào nó hoạt động

4

Bạn có hai lựa chọn: Hoặc là sử dụng art.title.decode('utf_8'), hoặc tạo ra một chuỗi Unicode mới với mã UTF-8 bởi unicode(art.title, 'utf_8').

+0

Hai biểu thức đó làm cùng một điều, và 'giải mã' sẽ là lựa chọn của tôi. Đối với một tình huống tương tự, hãy xem http://stackoverflow.com/questions/7585435/best-way-to-convert-string-to-bytes-in-python-3 –

Các vấn đề liên quan