2013-05-13 36 views
14

Đây là một trong những dự án của riêng tôi. Điều này sau này sẽ giúp ích cho những người khác trong trò chơi tôi đang chơi (AssaultCube).Trong khi đọc tệp trên Python, tôi gặp lỗi UnicodeDecodeError. Tôi có thể làm gì để giải quyết lỗi này?

Mục đích của nó là chia nhỏ tệp nhật ký và làm cho nó dễ đọc hơn cho người dùng.

Tôi tiếp tục gặp sự cố này. Bất cứ ai cũng biết làm thế nào để sửa lỗi này?

Hiện tại, tôi không định viết/tạo tệp. Tôi chỉ muốn lỗi này được sửa.

Dòng đã kích hoạt lỗi là dòng trống thực tế. (Nó dừng lại trên đường dây 66.346)

Đây là những gì các phần có liên quan của kịch bản của tôi trông giống như:

log = open('/Users/Owner/Desktop/Exodus Logs/DIRTYLOGS/serverlog_20130430_00.15.21.txt', 'r') 
for line in log: 

và ngoại lệ là:

Traceback (most recent call last): 
    File "C:\Users\Owner\Desktop\Exodus Logs\Log File Translater.py", line 159, in <module> 
    main() 
File "C:\Users\Owner\Desktop\Exodus Logs\Log File Translater.py", line 7, in main 
    for line in log: 
    File "C:\Python32\lib\encodings\cp1252.py", line 23, in decode 
return codecs.charmap_decode(input,self.errors,decoding_table)[0] 
UnicodeDecodeError: 'charmap' codec can't decode byte 0x81 in position 3074: character maps to <undefined> 
+0

mã hóa là gì tập tin trong? –

+0

Kỳ lạ, Điều này dường như chỉ xảy ra nếu tôi sử dụng tệp cụ thể. Nó dừng lại ở dòng spefiic. – Bugboy1028

+0

@martijnPieters, Tôi có thể tìm mã hóa trong tệp ở đâu? – Bugboy1028

Trả lời

20

Hãy thử:

enc='utf-8' 
log = open('/Users/Owner/Desktop/Exodus Logs/DIRTYLOGS/serverlog_20130430_00.15.21.txt', 'r', encoding=enc) 

nếu không hoạt động, hãy thử:

enc='utf-16' 
log = open('/Users/Owner/Desktop/Exodus Logs/DIRTYLOGS/serverlog_20130430_00.15.21.txt', 'r', encoding=enc) 

bạn cũng có thể thử nó với

enc='iso-8859-15' 

cũng thử:

enc = 'cp437' 

mà là rất cũ nhưng nó có một "ü" tại 0x81 Mà sẽ phù hợp với chuỗi "üßer" Mà Tôi tìm thấy trên trang chủ của khối tấn công.

nếu tất cả các mã khác là sai cố gắng để liên lạc với một số những kẻ tấn công đang phát triển khối hoặc như đã đề cập trong một chú thích: có một cái nhìn tại https://pypi.python.org/pypi/chardet

+2

Tham số mã hóa không phải là có sẵn trên Python 2 – antonagestam

+0

Rigth. Đối với Python 2.x, hãy xem http://stackoverflow.com/questions/10971033/backporting-python-3-openencoding-utf-8-to-python-2 –

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