01/10/2018, 11:23
Xử lý str và unicode trong Python
Trong quá trình làm việc (xử lý text) em toàn bị lẫn giữa str và unicode.
Em cũng không hiểu, lúc get dữ liệu khi thì nó ra str, khi thì ra unicode. Không phân biệt được.
Chỉ đến khi nối str với unicode phát sinh lỗi thì mới đi kiểm tra lại và convert lại. Thành ra rất mệt.
Xin các bro kinh nghiệm xử lý vụ này để làm mọi thứ nó rõ ràng hơn được không ạ?
Bài liên quan
Đây là một trong những điểm yếu không chỉ Python mà của rất nhiều Interpreter/Scripting language khác.
Trong python 2 thì string là sequence of bytes, còn với unicode (nói chung không chỉ trong python) thì every character in a string is one or more bytes, một character có byte đầu tiên là
110*****
tức là bắt đầu 1 ký tự mới. các byte sau sẽ là10*****
tức là tiếp tục biểu diễn character đó (xem tại đây). Muốn chuyển sang unicode thì dùngdecode('utf-8')
-> kết quả trả về kiểuunicode
(nên làm với mọi string khi đang xử lý string trong chương trình để đảm bảo tính consistent và tránh error như bạn kể). Muốn chuyển từunicode
sangstr
thì dùng hàmencode('utf-8)
(dùng trước khi lưu string vào database).Còn trong python 3 thì kiểu
str
sẽ làm việc được với unicode luôn, không còn là sequence of bytes nữa.Thanks bác rất nhiều ạ