Изменить таблицу преобразовать в использование latin1

0

Мне нужно делать то, что я здесь делаю для целой таблицы:

UPDATE users SET name = CONVERT(CAST(convert(name using  latin1) as BINARY) USING utf8);

Как это сделать с запросом ALTER TABLE?

Теги:
character-encoding

2 ответа

0

Прежде всего, убедитесь, что это правильное исправление.

Если я не ошибаюсь, вы пытаетесь отменить "двойное кодирование"?

См. Это для симптомов: проблема с символами UTF-8; я не вижу того, что я хранил

См. Это, где применяется исправление: http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases
а именно

CHARACTER SET utf8mb4 с двойным кодированием:

UPDATE tbl SET col = CONVERT(BINARY(CONVERT(col USING latin1)) USING utf8mb4);

Выгрузите таблицу, загрузите ее в другое место, запустите преобразование, проверьте результаты, особенно получив SELECT col, HEX(col)...

0

Пусть say columnA определяется как VARCHAR (25) CHARACTER SET latin1, затем вы можете изменить его на utf8, чтобы он мог иметь разные значения из разных языков, используя ниже:

  ALTER TABLE yourTable MODIFY columnA VARCHAR(25) CHARACTER SET utf8;
  • 0
    Ты смотришь на мой CAST - потому что я обращаюсь два раза?
  • 0
    когда вы конвертируете его в BINARY, он будет иметь 0x00 в конце, поэтому он не будет выглядеть хорошо; Кстати, как определяется name вашего столбца? Я предположил, что это CHAR; нет?
Показать ещё 2 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню