APK hataları

MySQL'de ə harfi soru işareti olur

ə iki bayttır. Eski utf8 onu saklayabilir. Bozulma çoğu zaman bağlantıdandır: program metni latin1 gibi gönderir, sütun da latin1 ise harf ? olur.

Veritabanını ve bağlantıyı utf8mb4 yap. latin1 yazma. Harf çoktan ? olduysa tabloyu değiştirmek onu geri getirmez.

  • Veritabanını şöyle aç: CREATE DATABASE magaza CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci.
  • Python'da charset="utf8mb4" yaz. charset="latin1" ve boş charset ə harfini ? yapar.
  • Eski sütun latin1 ise önce metni dışa aktar, sonra sütunu utf8mb4 yap. Ters sıra ? saklar.
  • SET NAMES utf8mb4 bağlantı içindir. Çoktan yazılmış ? simgesini değiştirmez.
  • Sıralama için MySQL 8'de utf8mb4_az_0900_ai_ci vardır. Adında az olan sıralama ə harfini e ile bir saymaz.
import pymysql

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

İlgili rehberler