Merhaba
harfler = "abcçdefgğhıijklmnoöprsştuüvyz"
for s in harfler:
print("{:<5}{:<15}{:<15}".format(s, s.encode("utf-8"), len(s.encode("utf-8"))))
çalıştırınca,
Traceback (most recent call last):
File “/home/orion/Dropbox/PROGRAMLAMA/Python_Projects/Python-3_F_Ozdil_Notlar/bolum_29.py”, line 120, in
print(“{:<5}{:<15}{:<15}”.format(s, s.encode(“utf-8”), len(s.encode(“utf-8”))))
TypeError: unsupported format string passed to bytes.format
hatası alıyorum. Bu sorunun nedeni .format metodunun bayt veri tipini gösterememesi. Çözüm ise str(s.encode("utf-8"))
yazmak.
Peki buraya kadar tamam ama o zaman şu kod nasıl TypeError: hatası vermiyor:
kod_çözücüler = ['UTF-8', 'cp1254', 'latin-1', 'ASCII']
harf = 'ç'
for kç in kod_çözücüler:
try:
print("'{}' karakteri {} ile {} olarak ve {} sayısıyla temsil edilir. Ayrıca ve {} bayt yer kaplar"
.format(harf, kç, harf.encode(kç), ord(harf), len(harf.encode(kç))))
except UnicodeEncodeError:
print("'{}' karakteri {} ile temsil edilemez!".format(harf, kç))
Yani neden str(harf.encode(kç)
) yazmaya gerek kalmadan çalışıyor?