sql >> Databáze >  >> RDS >> Mysql

Zobrazení japonských znaků z SQLException.getMessage()

ラケシュ12345

Správně?

Pravděpodobně to, co se stalo, když INSERTing bylo

  • Měli jste správné kódování utf8 pro data a
  • NASTAVIT JMÉNA latin1 -- ve výchozím nastavení nebo omylem a
  • Sloupec (nebo tabulka), do kterého byl text uložen, byl deklarován pomocí CHARACTER SET latin1 , opět možná ve výchozím nastavení.

Správné uložení dat můžete ověřit provedením

SELECT col, HEX(col) ...

Pokud tento řetězec načtete, šestnáctkové číslo bude E383A9E382B1E382B7E383A5EFBC91EFBC92EFBC93EFBC94EFBC95 . Všimněte si, že existují skupiny po 6 hexech počínaje E383 v případě Katakana nebo EFBC pro "číslice v celé šířce".

Za předpokladu, že tabulka stále uvádí latin1, žádná data se neztratí a 2krokový ALTER opraví to. Shrnuto:

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

kde jsou délky dostatečně velké a ostatní "..." mají cokoli jiného (NOT NULL, atd.) již na sloupci.

(Donedávna jsem na tuto otázku nemohl dát jasnou a úplnou odpověď.)




  1. LEFT() vs SUBSTRING() v SQL Server:Jaký je rozdíl?

  2. Počítejte počet dní mezi 2 daty v JPA

  3. Jak nakonfigurovat zvýraznění syntaxe v SQLcl

  4. Perl:Jak zkopírovat/zrcadlit vzdálené tabulky MYSQL do jiné databáze? Možná i jiná struktura?