Ошибки APK

В MySQL буква ə становится вопросительным знаком

ə — это два байта. Старый utf8 может её хранить. Поломка обычно из соединения: программа шлёт текст как latin1, и если столбец тоже latin1, буква становится ?.

Сделай базу и соединение utf8mb4. Не пиши latin1. Если буква уже ?, смена таблицы её не вернёт.

  • Открой базу так: CREATE DATABASE magaza CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci.
  • В Python пиши charset="utf8mb4". charset="latin1" и пустая кодировка превращают ə в ?.
  • Если старый столбец latin1, сначала выгрузи текст, потом сделай столбец utf8mb4. Обратный порядок оставляет ?.
  • SET NAMES utf8mb4 для соединения. Уже записанный знак ? он не меняет.
  • Для сортировки в MySQL 8 есть utf8mb4_az_0900_ai_ci. Сопоставление, в имени которого есть az, не считает ə буквой e.
import pymysql

baglanti = pymysql.connect(
    host="127.0.0.1",
    user="root",
    password="",
    database="magaza",
    charset="utf8mb4",
)

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