sql >> Database >  >> RDS >> Mysql

Japanse tekens weergeven uit SQLException.getMessage()

ラケシュ12345

Juist?

Wat er waarschijnlijk gebeurde toen INSERTing was

  • U had de juiste utf8-codering voor de gegevens, en
  • STEL NAMEN IN latin1 -- standaard of per ongeluk, en
  • De kolom (of tabel) waarin de tekst is opgeslagen, is gedeclareerd met CHARACTER SET latin1 , opnieuw mogelijk standaard.

U kunt controleren of de gegevens correct zijn opgeslagen door te doen

SELECT col, HEX(col) ...

Als je die string ophaalt, is de hex E383A9E382B1E382B7E383A5EFBC91EFBC92EFBC93EFBC94EFBC95 . Merk op hoe er groepen van 6 hexen zijn, beginnend met E383 in het geval van Katakana of EFBC voor de "cijfers over de volledige breedte".

Ervan uitgaande dat de tabel nog steeds latin1 zegt, gaan er geen gegevens verloren en de 2-staps ALTER zal het repareren. Samengevat:

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

waar de lengtes groot genoeg zijn en de andere "..." hebben wat anders (NIET NULL, enz.) al op de kolom stond.

(Tot voor kort kon ik deze vraag niet duidelijk en volledig beantwoorden.)




  1. Hoe opeenvolgende duplicaten in een tabel tellen?

  2. Voeg twee tabellen samen en vind overlappende datums en hiaten

  3. Postgres - MAAK TABEL UIT SELECT

  4. mysql Ongeldig aantal kolommen in CSV-invoer tijdens het importeren van csv-bestand