Lỗi in Tiếng Việt trong Python tại Python hay Cmd?

Mình in tiếng Việt trong Python thì cmd báo lỗi này:

Nhưng khi gõ chcp 65001 thì nó lại như thế này:

Thế rốt cuộc là lỗi của đứa nào ạ? Lỗi của Python hay là của cmd Window ạ và cách sửa như thế nào ạ? Mình tìm hoài trên google mà hk thấy :frowning: Mình cám ơn nhiều ạ!

1 Like

Đọ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

4 Likes

Bạn ơi, sao sau khi mình encode thì nó lại in ra thế này ạ?
Mình mới bắt đầu học về Python thôi à :frowning:

Bạn thêm dòng bên dưới vào đầu file xem sao.

# -*- coding: utf-8 -*-
print('Đà Nẵng vẫn luôn đón chào các bạn. =]]')

Mình nhìn không nhầm thì kia là python34. :kissing:

Xóa đi, cài lại python38 xem sao bạn.

4 Likes

À quên, thiếu “u” :))

print(u"Chào mừng bạn đến tâm dịch Đà Nẵng".encode("utf-8"))
2 Likes

u là của thời Python 2, mà Python 2 chết queo rồi còn đâu :v

3 Likes

Mình đang xài python34 đó bạn :frowning:

python34 cổ lắm rồi. :slightly_smiling_face:

Nó bị lỗi này bạn ơi :frowning:

Bạn làm theo hướng dẫn của 2 comments bên dưới topic này.


P/S: google y nguyên đoạn thứ 2 là ra mà. :neutral_face:

3 Likes

Được rồi nha bạn,
Mới vớ được bản python 3.8.5 :v
Mới nãy bật Window Update lên để vận hành Update for Windows 7 (KB2533623). Mà Window 7 nghe nói đã bị khai tử rồi nên giờ có bật Window Update chắc cũng chả sao (với lại cũng lười tắt nó :stuck_out_tongue:)

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?