Въпросителните знаци идват от това:
- Клиентът има валиден знак (добър) и
SET NAMESсъгласява се с кодирането, което клиентът има (добро), ноCHARACTER SETна целевата колона не включва предвидения знак (лош).
Примери:
latin1обработва само западноевропейски знаци; опитвайки се да поставите източноевропейски символ или азиатски символ в него няма да пасне.latin2иcp1250може да се справи с чешки, така че преобразуванията между тях са предимно ОК, но не и между нито един от тях иlatin1utf8mb4е надмножество наutf8.Поставянето на символ utf8 в utf8mb4 е добре, но обратното ще доведе до '?' в някои случаи.
Знаците, които са били преобразувани в "?" не може да бъде възстановен от таблицата.
Как да коригирам бъдещи INSERTs ?
- Използване на
utf8mb4в колоните на таблицата вероятно работи във всички случаи. - В противен случай изберете някакъв
CHARACTER SETза колоната(ите) на таблицата, която разумно съответства на клиентските данни.
Причината само някои от знаците са ? (в š?ž?? ) е защото šž съществуват в latin1, но останалите не.
Долен ред:Променете CHARACTER SET в дефиницията на таблицата.