После неудачной конвертации из одной кодировки в другую, может случится ситуация, при которой вместо заглавной буквы “И” и строчной “ш” отображаются знаки “�?”, при этом остальные символы отображаются правильно. Например “Андру�?ко �?рина”.
По-умолчанию phpmyadmin коннектится к БД, используя UTF-8. В полях с кириллицей можно увидеть кракозябры, похожие на “РђРЅРґСЂСѓС?РєРѕ Р?СЂРёРЅР°”.
Проверить наличие знаков “�?” в тексте можно с помощью запроса:
1 2 3 4 |
SELECT
convert(name USING BINARY)
FROM
`MyTable`; |
Как исправить?
- создаем таблицу аналогичную по структуре той, которая хранится в неправильной кодировке.
- получаем структуру исходной таблицы:
1 |
SHOW CREATE TABLE `MyTable`; |
- задаем другое имя, напр. `New_MyTable`; прописываем UTF-8 кодировку;
- в стобцах исходной таблицы содержащих кириллицу делаем замену:
1 2 3 4 5 6 7 8 9 10 |
UPDATE `New_MyTable`
SET `my_column` = REPLACE (`my_column`,
CONCAT(CHAR(209), CHAR(63)),
CONCAT(CHAR(209), CHAR(136))
);
UPDATE `New_MyTable`
SET `my_column` = REPLACE (`my_column`,
CONCAT(CHAR(208), CHAR(63)),
CONCAT(CHAR(208), CHAR(152))
); |
- вставляем в таблицу `New_MyTable` данные, перекодируя на ходу нужные столбцы:
1 2 3 4 5 6 7 8 |
INSERT INTO
`New_MyTable`(id, my_column, third_column)
SELECT
id,
convert(my_column using binary),
third_column
FROM
`MyTable`; |
- Таблица `New_MyTable` готова к использованию.
Источник: Античат.ру