01/10/2018, 16:08
Lỗi run file bytes and character encodings
Em đang học python theo cuốn learn python 3 the hard way nhưng tới bài 23 thì run file nó không chạy mong mọi người giúp đỡ.
Em đã chỉnh codepage sang utf-8 nhưng nó vẫn không chạy, code:
import sys
script, input_encoding, error = sys.argv
def main(language_file, encoding, errors):
line = language_file.readline()
if line:
print_line(line, encoding, errors)
return main(language_file, encoding, errors)
def print_line(line, encoding, errors):
next_lang = line.strip()
raw_bytes = next_lang.encode(encoding, errors=errors)
cooked_string = raw_bytes.decode(encoding, errors=errors)
print(raw_bytes, "<===>", cooked_string)
languages = open("test.txt", encoding="utf-8")
main(languages, input_encoding, error)
Lỗi khi run file:
Bài liên quan
Trước mình bị, đổi mode reading sang reading binary (rb) chứ ko để reading text là hết.
em đổi rồi nhưng vẫn không chạy được, nó bị lỗi này:
khi là rb rồi bạn bỏ encoding luôn :3
vẫn lỗi ạ:
Vì nó là raw_bytes rồi nên bạn ko cần encoding nữa
Chị có thể ghi ra rõ ràng được không ạ? Chứ em bỏ encoding kiểu gì nó cũng báo lỗi, em cũng search google rồi nhưng cũng không sửa được (chắc do không đúng keyword hoặc do hơi kém )
Mà cú pháp thằng encoding là str.encode(encoding=“utf-8”, errors=“strict”) mà vẫn sửa được ạ ?
Thôi vầy nè
Để in ra utf-8 thì:
Vì nó là đang là một chuỗi byte rồi (lí do là đọc binary). Nên nếu muốn encode thì phải decode rồi mới encode được.
Em đã để decode lên trước encode thì nó chỉ có chạy dòng đầu tiên và nó báo lỗi. Em thử tạo 1 file giống giống như chị ví dụ thì cũng lôi tương tự:
Bạn đưa file đó cho mình xem đc ko
code đây ạ:
À ý mình là file txt ấy
Nội dung file đây ạ
Mình đọc hoàn toàn bth luôn.
Bạn extract file này ra từ đâu đúng không?
đúng ạ, em làm y như hướng dẫn
Có thể file bạn extract ko phải là 1 file text utf8 mà nó là binary luôn. Nên khi extract ra, có các byte kèm theo nên từ đó ko decode được :3
à rồi em hiểu em hiểu, thấy mấy ông trên GitHub cũng nói vậy mà em không ngộ ra hóa ra do lúc em lưu lại file không sửa lại utf-8. Em cám ơn, ngồi từ sáng tới mãi mới ra