sql >> Base de Datos >  >> RDS >> Mysql

Páginas del servidor Java:¿intercalación al insertar en MySql?

Los signos de interrogación provienen de esto:

  • El cliente tiene un carácter válido (bueno) y
  • Los SET NAMES está de acuerdo con la codificación que tiene el cliente (bien), pero
  • El CHARACTER SET de la columna de destino no incluye el carácter deseado (malo).

Ejemplos:

  • latin1 maneja solo caracteres de Europa Occidental; tratar de poner un carácter de Europa del Este o cualquier carácter asiático no encajará.
  • latin2 y cp1250 puede manejar checo, por lo que las conversiones entre ellos son en su mayoría correctas, pero no entre ninguno de ellos y latin1
  • utf8mb4 es un superconjunto de utf8 .Poner un carácter utf8 en utf8mb4 está bien, pero al revés dará como resultado un '?' en algunos casos.

Los caracteres que se convirtieron en '?' no se puede recuperar de la mesa.

Cómo arreglar futuros INSERTs ?

  • Uso de utf8mb4 en la(s) columna(s) de la tabla probablemente funcione en todos los casos.
  • De lo contrario, elige algún CHARACTER SET para las columnas de la tabla que coincidan razonablemente con los datos del cliente.

¿La razón por la que solo algunos de los caracteres son ? (en š?ž?? ) es porque šž existen en latín1 pero los demás no.

En pocas palabras:cambia el CHARACTER SET en la definición de la tabla.