2013-04-25 61 views
5

Khi tôi cố gắng để chuyển đổi unicode:Chuyển đổi unicode ký tự Cyrillic để chuỗi trong python

a = u"Тест" 

Để chuỗi:

str(a) 

Tôi đã nhận lỗi này:

'ascii' codec can't encode characters in position 0-3: ordinal not in range(128) 

Tôi cần str (a) để cung cấp cho tôi đầu ra:

>> str(a) 
>> 'Тест' 
+0

Khám phá liên kết này: http://stackoverflow.com/questions/2365411/python-convert-unicode-to-ascii-without-errors –

+0

Tôi đã xem thẻ này trong một vài tuần và tôi thấy câu hỏi này hầu như mỗi ngày. Bạn thậm chí có thử tìm kiếm lỗi này trước khi đăng không? Ở đây, [hơn 500 kết quả] (http://stackoverflow.com/search?q=%22%27ascii%27+codec+can%27t+encode%22). –

+0

Có, tôi đã làm và không ai không xử lý trường hợp của tôi. – UnLiMiTeD

Trả lời

4

Chọn một mã hóa mà có thể mã hóa ký tự Cyrillic, chẳng hạn như UTF-8:

>>> a = u'Тест' 

>>> a.encode('utf-8') 
'\xd0\xa2\xd0\xb5\xd1\x81\xd1\x82' 

Bảng ASCII không có điểm mã cho ký tự Cyrillic, vì vậy bạn cần phải xác định một mã hóa một cách rõ ràng.

Nhưng nếu tất cả những gì bạn muốn chỉ là in chuỗi, thì điều bạn nên quan tâm là mã hóa của thiết bị đầu cuối và phông chữ hệ thống.

+0

Tôi nhận được điều này, nhưng tôi cần hiển thị chúng trong chuỗi được mã hóa như chuỗi 'Kiểm tra'. – UnLiMiTeD

+1

@UnLiMiTeD Một tìm kiếm cho "python transliterate cyrillic" cho [this] (http://stackoverflow.com/a/14173535/1258041) trong số những thứ khác, nếu đó là những gì bạn cần. –

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