2012-04-25 14 views
9

Tôi đang cố in chuỗi từ archived web crawl, nhưng khi tôi gặp lỗi này :UnicodeEncodeError: 'ascii' codec không thể mã hóa ký tự u ' xe7' ở vị trí 17710: thứ tự không nằm trong phạm vi (128)

print page['html'] 
UnicodeEncodeError: 'ascii' codec can't encode character u'\xe7' in position 17710: ordinal not in range(128) 

Khi tôi cố gắng in unicode(page['html']) tôi nhận được:

print unicode(page['html'],errors='ignore') 
TypeError: decoding Unicode is not supported 

Bất kỳ ý tưởng làm thế nào tôi có thể đúng mã chuỗi này, hoặc ít nhất là có được nó để in? Cảm ơn.

+4

http://farmdev.com/talks/unicode/ –

+2

Đây là câu hỏi python phổ biến nhất hiện nay. – KurzedMetal

Trả lời

20

Bạn cần phải mã hóa mã unicode bạn đã lưu để hiển thị nó, không phải giải mã - unicode là dạng không được mã hóa. Bạn nên luôn luôn chỉ định một mã hóa, để mã của bạn sẽ được di động. Các "bình thường" chọn là utf-8:

print page['html'].encode('utf-8') 

Nếu bạn không chỉ định một mã hóa, có hay không nó hoạt động sẽ phụ thuộc vào những gì bạn đang print ing để - soạn thảo của bạn, hệ điều hành, chương trình thiết bị đầu cuối, vv

+2

+1 cho "lựa chọn thông thường". http://www.utf8everywhere.org –