Vad hände:
- du hade utf8-kodad data (bra)
SET NAMES latin1var 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ättaCHARACTER 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.