Ошибки APK

Слово ödəyici становится ödÉ™yici

В UTF-8 буква ə — это два байта: C9 99. Windows-1252 читает их как буквы: C9 это É, а 99 это ™. Поэтому ə на экране выглядит как É™. Тем же путём ö становится ö. Слово ödəyici записывается как ödÉ™yici.

Турецкие страницы дают таблицу для ş, ğ и ı. É™ в той таблице нет, потому что в турецком нет ə.

Если буква уже стала ?, этот код её не вернёт. Байт потерян.

  • Используй код как есть: metn.encode("cp1252").decode("utf-8"). ödÉ™yici снова становится ödəyici.
  • Увидев É™, не ищи таблицу замен. Это буква ə, неверно прочитанная как Windows-1252.
  • Турецкая таблица для ş, ğ и ı не чинит É™. Буквы ə в той таблице нет.
  • Если код бросает ошибку, в тексте уже есть знак, который не байт cp1252. Это место напиши рукой.
  • Если буква стала ?, байт потерян. Возьми текст из источника заново.

Исправленный текст снова сохрани как utf-8. Тот же файл второй раз как cp1252 не читай.

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

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

Похожие руководства