APK hataları

ödəyici sözcüğü ödÉ™yici olur

UTF-8'de ə iki bayttır: C9 99. Windows-1252 bu baytları harf gibi okur: C9 É, 99 ise ™ olur. Bu yüzden ə ekranda É™ görünür. ö aynı yolla ö olur. ödəyici böylece ödÉ™yici yazılır.

Türkçe sayfalar ş, ğ, ı için tablo verir. É™ o tabloda yoktur, çünkü Türkçede ə yoktur.

Harf çoktan ? olduysa bu kod onu geri getirmez. Bayt gitmiştir.

  • Kodu olduğu gibi kullan: metn.encode("cp1252").decode("utf-8"). ödÉ™yici yeniden ödəyici olur.
  • É™ görünce değiştirme tablosu arama. Bu, ə harfinin Windows-1252 ile yanlış okunuşudur.
  • ş, ğ, ı için Türkçe tablo É™ düzeltmez. ə o tabloda yoktur.
  • Kod hata verirse metinde artık cp1252 baytı olmayan bir işaret vardır. O yeri elle yaz.
  • Harf ? olduysa bayt gitmiştir. Metni kaynaktan yeniden al.

Düzelmiş metni yeniden utf-8 kaydet. Aynı dosyayı bir daha cp1252 gibi okuma.

def duzelt(metn: str) -> str:
    return metn.encode("cp1252").decode("utf-8")

print(duzelt("ödəyici"))

İlgili rehberler