Не полінюсь витратити пів часа свого робочого часу, щоб помогти вам мої читачі з проблемою кодування таблиць баз данних, та їх полей.

робив оце на джумлі сайт-каталог і один з компонентів замість того, щоб бути з utf8_general_ci кодуванням, яке використовує joomla на даний час, компонент zoo в базі данних всі таблиці зробив в latin1_swedish_ci кодуванні. І це стало проблемою бо в адмінці і на сайті, все що вводиш в базу данних стає крякозябрями. 

І так правим:

Першим ділом заходим в наш phpmyadmin (чи чим ви там користується для роботи з вашою базою данних, можливо взагалі консоллю :) )

Якщо у вас одна таблиця то можна просто за допомогою наступного коду

ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name [COLLATE collation_name]

Але якщо у вас 50-100 таблиць, а вних по 10-30 полів? Не панікуєм, вихід є!

Робимо наступний запит до БД.

SELECT CONCAT('ALTER TABLE `', t.`TABLE_SCHEMA`, '`.`', t.`TABLE_NAME`, '` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;') as sqlcode
  FROM `information_schema`.`TABLES` t 
WHERE 1
  AND t.`TABLE_SCHEMA` = 'db_name' 
ORDER BY 1

Код можна копіювати повністю лише замініть db_name на вашу,  а також якщо вам потрібно змінити інші кодування, тоді замініть також utf8 і  utf8_general_ci на відповідні вашим.

Після виконання даного скрипта отримаєм повний список всіх таблиць з нашої бд db_name з готовим кодом для виконання для зміни кодування в наших таблицях та полях бази данних.

Ось декілька строк для зразку (з 43шт, які мені вивело)

ALTER TABLE `mydb`.`jos_assets` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `mydb`.`jos_banners` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `mydb`.`jos_banner_clients` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `mydb`.`jos_banner_tracks` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `mydb`.`jos_categories` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `mydb`.`jos_contact_details` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
ALTER TABLE `mydb`.`jos_content_frontpage` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;

Берем код, який нам любязно підготовив наш скріпт і вставляєм його до виконання.

Отримаємо щось на зразок такого звіту

ALTER TABLE `mydb`.`jos_assets` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;# Затронуто строк: 177.
Категорія: Joomla
UA TOP Bloggers