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

Viser japanske tegn fra SQLException.getMessage()

ラケシュ12345

Korrekt?

Sandsynligvis det, der skete, da INSERTing var

  • Du havde korrekt utf8-kodning for dataene, og
  • SET NAMES latin1 -- som standard eller ved en fejl, og
  • Kolonnen (eller tabellen), som teksten blev gemt i, blev erklæret med CHARACTER SET latin1 , igen muligvis som standard.

Du kan bekræfte, at dataene er lagret korrekt ved at gøre

SELECT col, HEX(col) ...

Hvis du henter den streng, vil hex være E383A9E382B1E382B7E383A5EFBC91EFBC92EFBC93EFBC94EFBC95 . Læg mærke til, hvordan der er grupper på 6 hex, startende med E383 i tilfælde af Katakana eller EFBC for "cifrene i fuld bredde".

Hvis vi antager, at tabellen stadig siger latin1, går der ingen data tabt, og 2-trins ALTER vil ordne det. Sammenfattende:

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

hvor længderne er store nok og de andre "..." har hvad der ellers (IKKE NULL osv.) allerede var på kolonnen.

(Jeg kunne ikke give dette klart og fuldstændigt et svar på dette spørgsmål før for ganske nylig.)




  1. SQL-selv-deltagelsesforespørgsel? Hvordan får man kategorier underkategorier?

  2. kontinuerlig rulning. AJAX, PHP, JAVASCRIPT, MYSQL

  3. Rails + PostgreSQL - Brug Like

  4. Brug af Percona Audit Log Plugin til databasesikkerhed