Đọc lỗi phát rồi suy đoán ra thôi. Lỗi nó ghi là:
UnicodeEncodeError: ‘charmap’ codec can’t encode character ‘\u1eeb’ (ư)
Tạm dịch:
Lỗi encode theo bảng mã (charset) unicode: ‘charmap’ codec không thể encode kí tự ‘\u1eeb’ (ư)
=> Đây là lỗi do không phương thức encode không encode được kí tự ư
. Thằng Python mặc định sẽ cứ encode chuỗi theo chuẩn encode hiện tại của thằng CMD, hầu hết trường hợp là chuẩn UTF-8 (có thể encode tất cả kí tự trong bảng mã Unicode) nhưng đôi khi vì lí do nào đó mà thằng CMD lại dùng kiểu encode khác không hỗ trợ kí tự ư
và một số kí tự khác, khả năng cao là CP-1252.
=> Cả Python lẫn CMD đều có lỗi nhưng CMD nặng hơn.
Lệnh chcp 65001
dùng để chuyển kiểu encode của CMD sang UTF-8 (code page 65001). Thằng Python theo đó cũng encode chuỗi theo kiểu UTF-8 thành ra là hết lỗi. Cách sửa lỗi này tốt nhất là thay vì cho thằng Python mặc định theo kiểu encode của CMD thì cho nó theo kiểu encode UTF-8 thông qua method .encode()
. Ngoài ra khi ghi file cũng nên chỉnh encoding
sang UTF-8.
print(u"Chào mừng bạn đến tâm dịch Đà Nẵng".encode("utf-8"))
Từ khóa về lỗi này: UnicodeEncodeError: ‘charmap’ codec can’t encode characters