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

Visualizzazione dei caratteri giapponesi da SQLException.getMessage()

ラケシュ12345

Corretto?

Probabilmente quello che è successo quando è stato INSERTing

  • Avevi la codifica utf8 corretta per i dati e
  • SET NAMES latin1 -- per impostazione predefinita o per errore e
  • La colonna (o tabella) in cui è stato memorizzato il testo è stata dichiarata con CHARACTER SET latin1 , ancora possibilmente per impostazione predefinita.

Puoi verificare che i dati siano archiviati correttamente facendo

SELECT col, HEX(col) ...

Se recuperi quella stringa, l'esadecimale sarà E383A9E382B1E382B7E383A5EFBC91EFBC92EFBC93EFBC94EFBC95 . Nota come ci sono gruppi di 6 esadecimali, a partire da E383 nel caso di Katakana o EFBC per le "cifre a larghezza intera".

Supponendo che la tabella indichi ancora latin1, nessun dato viene perso e ALTER in 2 fasi lo risolverà. In sintesi:

ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;

dove le lunghezze sono abbastanza grandi e gli altri "..." hanno qualsiasi altra cosa (NON NULL, ecc.) era già sulla colonna.

(Non potevo dare una risposta chiara e completa a questa domanda fino a poco tempo fa.)