I punti interrogativi derivano da questo:
- Il cliente ha un carattere valido (buono) e
- Il
SET NAMESconcorda con la codifica che ha il client (buono), ma - Il
CHARACTER SETdella colonna di destinazione non include il carattere previsto (cattivo).
Esempi:
latin1gestisce solo i caratteri dell'Europa occidentale; il tentativo di inserire un carattere dell'Europa orientale o qualsiasi altro carattere asiatico non si adatta.latin2ecp1250può gestire il ceco, quindi le conversioni tra di loro sono per lo più OK, ma non tra nessuno dei due elatin1utf8mb4è un superset diutf8.Inserire un carattere utf8 in utf8mb4 va bene, ma il contrario risulterà in un '?' in alcuni casi.
I caratteri che sono stati convertiti in '?' non può essere recuperato dalla tabella.
Come correggere i futuri INSERTs ?
- Utilizzo di
utf8mb4sulle colonne della tabella probabilmente funziona in tutti i casi. - Altrimenti, scegli un
CHARACTER SETper le colonne della tabella che corrispondono ragionevolmente ai dati del cliente.
Il motivo per cui solo alcuni dei caratteri sono ? (in š?ž?? ) è perché šž esistono in latino1 ma gli altri no.
In conclusione:cambia il CHARACTER SET nella definizione della tabella.