ラケシュ12345
Benar?
Mungkin apa yang terjadi ketika INSERTing adalah
- Anda memiliki penyandian utf8 yang benar untuk data, dan
- SET NAMA latin1 -- secara default atau karena kesalahan, dan
- Kolom (atau tabel) tempat teks disimpan dideklarasikan dengan
CHARACTER SET latin1
, sekali lagi mungkin secara default.
Anda dapat memverifikasi bahwa data disimpan dengan benar dengan melakukan
SELECT col, HEX(col) ...
Jika Anda mengambil string tersebut, hex akan menjadi E383A9E382B1E382B7E383A5EFBC91EFBC92EFBC93EFBC94EFBC95
. Perhatikan bagaimana ada grup 6 hex, mulai E383
dalam kasus Katakana atau EFBC
untuk "digit lebar penuh".
Dengan asumsi tabel masih mengatakan latin1, tidak ada data yang hilang, dan 2-langkah ALTER akan memperbaikinya. Singkatnya:
ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;
di mana panjangnya cukup besar dan yang lain "..." memiliki apa pun (NOT NULL, dll) sudah ada di kolom.
(Saya tidak dapat memberikan jawaban yang jelas dan lengkap untuk pertanyaan ini sampai baru-baru ini.)