Mysql
 sql >> Database >  >> RDS >> Mysql

Pagine del server Java - confronto durante l'inserimento in MySql?

I punti interrogativi derivano da questo:

  • Il cliente ha un carattere valido (buono) e
  • Il SET NAMES concorda con la codifica che ha il client (buono), ma
  • Il CHARACTER SET della colonna di destinazione non include il carattere previsto (cattivo).

Esempi:

  • latin1 gestisce solo i caratteri dell'Europa occidentale; il tentativo di inserire un carattere dell'Europa orientale o qualsiasi altro carattere asiatico non si adatta.
  • latin2 e cp1250 può gestire il ceco, quindi le conversioni tra di loro sono per lo più OK, ma non tra nessuno dei due e latin1
  • utf8mb4 è un superset di utf8 .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 utf8mb4 sulle colonne della tabella probabilmente funziona in tutti i casi.
  • Altrimenti, scegli un CHARACTER SET per 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.