2011-11-28 34 views
6

Nhiều vấn đề tôi gặp phải trong Python có liên quan đến việc không có thứ gì đó trong Unicode. Có lý do chính đáng nào để không sử dụng Unicode theo mặc định? Tôi hiểu cần phải dịch một cái gì đó trong ASCII, nhưng nó có vẻ là ngoại lệ và không phải là quy tắc.Có lý do nào tốt để không sử dụng unicode thay vì chuỗi không?

Tôi biết Python 3 sử dụng Unicode cho tất cả các chuỗi. Điều này có nên khuyến khích tôi làm nhà phát triển cho unicode() tất cả các chuỗi của tôi không?

Trả lời

6

Nói chung, tôi sẽ nói "không" không có lý do chính đáng để sử dụng string trên unicode. Hãy nhớ rằng, bạn cũng không cần phải gọi unicode() để tạo chuỗi unicode, bạn có thể làm như vậy bằng cách thêm tiền tố chuỗi với một chữ thường u như u"this is a unicode string".

+1

Cảm ơn, tôi sẽ bắt đầu làm điều đó từ bây giờ. –

4

Trong Python 2.x:

  • Một đối tượng str là về cơ bản chỉ là một chuỗi các byte .
  • Một đối tượng unicode là một chuỗi gồm ký tự.

Biết được điều này, nó phải là dễ dàng để chọn đúng loại:

  • Nếu bạn muốn có một chuỗi ký tự sử dụng unicode.
  • Nếu bạn muốn một chuỗi được mã hóa dưới dạng byte hãy sử dụng str (bằng nhiều ngôn ngữ khác bạn sẽ sử dụng byte[] tại đây).

Trong Python 3.x loại str là một chuỗi ký tự, giống như bạn mong đợi. Bạn có thể sử dụng bytes nếu bạn muốn một chuỗi byte.

+0

Python 2.6+ cũng có dấu ngắt quãng, nếu bạn muốn byte của bạn trong một cái gì đó dễ biến đổi hơn một chút. – kindall

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