sql >> Databasteknik >  >> Database Tools >> phpMyAdmin

Lagra data MySQL i kurdiskt teckensnitt?

Vad hände:

  • du hade utf8-kodad data (bra)
  • SET NAMES latin1 var i kraft (standard, men fel)
  • kolumnen deklarerades CHARACTER SET latin1 (standard, men fel)

Som du INSERTed informationen konverterades till latin1, som inte har värden för arabiska (kurdiska/farsi/etc) tecken, så frågetecken ersatte dem.

Botemedlet (för framtida INSERTed ):

  • utf8-kodad data (bra)
  • mysqli_set_charset('utf8') (eller vad som helst som din klient behöver för att upprätta CHARACTER SET )
  • kontrollera att kolumn(erna) och/eller tabellstandard är CHARACTER SET utf8
  • Om du visar på en webbsida, <meta...utf8> bör vara nära toppen.

Diskussionen ovan handlar om CHARACTER SET , kodning av tecken. Nu till ett tips om COLLATION , som används för att jämföra och sortera.

För att dubbelkontrollera att data lagras korrekt, gör duSELECT col, HEX(col)... .
ه‌رچوون bör komma tillbaka D987E2808CD8B1DA86D988D988D986
Arabiska tecken i utf8 har hex av D8xx eller D9xx.

(utf8mb4 fungerar lika bra som utf8; antingen fungerar för arabiska.)

Dåliga nyheter:Datan som infogades och förvandlades till '???' kan inte återställas.



  1. PhpMyAdmin-dataimportproblem med prestanda

  2. SQL Server Management Studio, hur man får ner exekveringstiden till millisekunder

  3. Ta bort en del av strängen i tabellen

  4. MySQL matar ut västerländsk kodning i UTF-8 PHP-fil