7
n = u"Tübingen"
repr(n) # `T\xfcbingen` # Unicode
i = 1 # integer
Việc đầu tiên của các tập tin sau đây ném
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 82: ordinal not in range(128)
Khi tôi làm n.encode('utf8')
nó hoạt động.
Tác phẩm thứ hai hoàn hảo trong cả hai trường hợp.
# Python File 1
#
#!/usr/bin/env python -B
# encoding: utf-8
print '{id}, {name}'.format(id=i, name=n)
# Python File 2
#
#!/usr/bin/env python -B
# encoding: utf-8
print '%i, %s'% (i, n)
Từ trong tài liệu nó được khuyến khích sử dụng format()
thay vì các nhà điều hành định dạng %
, tôi không hiểu tại sao format()
có vẻ "handicaped". format()
chỉ hoạt động với utf8
-strings?
Khi bạn đã thực hiện định dạng 'u '{id}, {name}' (id = i, name = n)' bạn đã quan sát điều gì? Lưu ý rằng chuỗi định dạng là một chuỗi Unicode 'u '...''. Vui lòng thêm điều đó vào ví dụ của bạn và nhận xét về nó. –
Cảm ơn bạn S.Lott, đây là nó. Bây giờ tôi đã hiểu lỗi của tôi ở đâu. ''{id}, {name}'' là một chuỗi utf-8 (được xác định bởi * dòng ma thuật * '# encoding: utf-8') và' n' ở dạng unicode. Không thể "nối" chúng được. Đó là lý do tại sao 'n.encode ('utf8')' hoạt động. Đúng? – Aufwind