Collation و Character Set در MySQL چیست؟
Character Set مجموعه کاراکترهای قابل ذخیرهسازی در دیتابیس است (مثل UTF-8). Collation قوانین مقایسه و مرتبسازی این کاراکترها را تعیین میکند. انتخاب صحیح Collation برای پشتیبانی از زبان فارسی و کاراکترهای چندبایتی بسیار مهم است.
چرا تغییر Collation لازم است؟
اگر کاراکترهای فارسی بهصورت علامت سؤال (???) یا اشتباه نمایش داده میشوند، Collation نادرست تنظیم شده. برای وردپرس و سایتهای فارسی، utf8mb4_unicode_ci بهترین انتخاب است.
تغییر Collation دیتابیس
ALTER DATABASE db_name CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
تغییر Collation تمام جداول
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
برای تمام جداول یکجا:
SELECT CONCAT('ALTER TABLE ', TABLE_NAME, ' CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_SCHEMA = 'db_name';
خروجی را کپی و اجرا کنید.
تغییر در phpMyAdmin
دیتابیس را انتخاب کنید. تب Operations را بزنید. در بخش Collation، مقدار utf8mb4_unicode_ci را انتخاب و Go بزنید.
تغییر در wp-config.php
برای وردپرس:
define('DB_CHARSET', 'utf8mb4');
define('DB_COLLATE', 'utf8mb4_unicode_ci');
Collationهای رایج
utf8mb4_unicode_ci بهترین انتخاب برای فارسی و چندزبانه، utf8mb4_general_ci سریعتر اما دقت مرتبسازی کمتر، latin1_swedish_ci نامناسب برای فارسی.
هاست وردپرس میهن هاستینگ با utf8mb4 پیشفرض برای فارسی بهینه است. کانفیگ سرور شامل تنظیم Collation و MySQL. سرور مجازی برای دسترسی کامل به تنظیمات MySQL.