Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Wyświetlanie japońskich znaków z SQLException.getMessage()

ラケシュ12345

Prawidłowo?

Prawdopodobnie co się stało, gdy WSTAWIANIE było

  • Miałeś poprawne kodowanie utf8 dla danych i
  • SET NAMES latin1 – domyślnie lub przez pomyłkę, i
  • Kolumna (lub tabela), w której został zapisany tekst, została zadeklarowana za pomocą CHARACTER SET latin1 , prawdopodobnie domyślnie.

Możesz sprawdzić, czy dane są przechowywane prawidłowo, wykonując

SELECT col, HEX(col) ...

Jeśli pobierzesz ten ciąg, heksadecymalny będzie E383A9E382B1E382B7E383A5EFBC91EFBC92EFBC93EFBC94EFBC95 . Zwróć uwagę, że istnieją grupy po 6 hex, zaczynające się od E383 w przypadku Katakany lub EFBC dla "cyfr o pełnej szerokości".

Zakładając, że tabela nadal mówi latin1, żadne dane nie zostały utracone, a 2-krokowa ALTER naprawi to. Podsumowując:

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

gdzie długości są wystarczająco duże, a inne "..." mają to, co jeszcze (NOT NULL, itp.) było już w kolumnie.

(Do niedawna nie mogłem udzielić jasnej i kompletnej odpowiedzi na to pytanie.)




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak usunąć zduplikowaną wartość oddzieloną przecinkami w jednej kolumnie w MySQL?

  2. Jak określić sortowanie z PDO bez SET NAMES?

  3. Najlepsze praktyki dotyczące wydajnego przechowywania skrótów md5 w mysql

  4. MySQL Błąd 1064 podczas dodawania klucza obcego za pomocą MySQL Workbench

  5. Czy MS-SQL obsługuje tabele w pamięci?