ラケシュ12345
Правилно?
Вероятно какво се е случило, когато INSERTing беше
- Имахте правилно utf8 кодиране за данните и
- ЗАДАВАНЕ НА ИМЕНА latin1 -- по подразбиране или по погрешка, и
- Колоната (или таблицата), в която е съхранен текстът, е декларирана с
CHARACTER SET latin1
, отново възможно по подразбиране.
Можете да проверите дали данните се съхраняват правилно, като направите
SELECT col, HEX(col) ...
Ако извлечете този низ, шестнадесетичният ще бъде E383A9E382B1E382B7E383A5EFBC91EFBC92EFBC93EFBC94EFBC95
. Забележете как има групи от 6 шестнадесетични, започващи E383
в случай на катакана или EFBC
за "цифрите с пълна ширина".
Ако приемем, че таблицата все още казва latin1, не се губят данни и 2-стъпков ALTER ще го оправи. Накратко:
ALTER TABLE Tbl MODIFY COLUMN col VARBINARY(...) ...;
ALTER TABLE Tbl MODIFY COLUMN col VARCHAR(...) ... CHARACTER SET utf8 ...;
където дължините са достатъчно големи и другият "..." има каквото и да е друго (НЕ NULL и т.н.) вече е в колоната.
(Доскоро не можех да дам този ясен и пълен отговор на този въпрос.)