Converting your MySQL database to UTF8
This document describes how to convert your MySQL database from the latin1 charset to UTF8[link1] (utf8mb4[link2]). WackoWiki requires that your database is now UTF8 and will not upgrade if your database is not.- WackoWiki applications used in multi-language mode require a on record conversion.
-
iconv('ISO-8859-1', 'UTF-8', $text)
-
iconv('ISO-8859-2', 'UTF-8', $text)
-
iconv('ISO-8859-7', 'UTF-8', $text)
-
iconv('CP1251', 'UTF-8', $text)
-
iconv('CP1257', 'UTF-8', $text)
-
- Unicode entities also require a conversion to UTF-8.
-
$output = preg_replace_callback('/([0-9]+;)/', function($m) { return mb_convert_encoding($m[1], 'UTF-8', 'HTML-ENTITIES'); }, $input);
-
Migrating to Unicode
database:ALTER DATABASE database_name CHARACTER SET = utf8mb4 COLLATE = utf8mb4_unicode_520_ci;
each table:
ALTER TABLE table_name CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
each column:
ALTER TABLE table_name CHANGE column_name column_name VARCHAR(191) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_520_ci;
Modify connection, client, and server character sets
Make sure to set the client and server character set as well./etc/my.cnf:
[client] default-character-set = utf8mb4 [mysql] default-character-set = utf8mb4 [mysqld] character-set-client-handshake = FALSE character-set-server = utf8mb4 collation-server = utf8mb4_unicode_520_ci
Check if these settings work correctly:
mysql> SHOW VARIABLES WHERE Variable_name LIKE 'character\_set\_%' OR Variable_name LIKE 'collation%'; +--------------------------+------------------------+ | Variable_name | Value | +--------------------------+------------------------+ | character_set_client | utf8mb4 | | character_set_connection | utf8mb4 | | character_set_database | utf8mb4 | | character_set_filesystem | binary | | character_set_results | utf8mb4 | | character_set_server | utf8mb4 | | character_set_system | utf8 | | collation_connection | utf8mb4_unicode_520_ci | | collation_database | utf8mb4_unicode_520_ci | | collation_server | utf8mb4_unicode_520_ci | +--------------------------+------------------------+ 10 rows in set (0.00 sec)
Repair and optimize all tables
Run the following MySQL queries for each table you want to repair and optimize:REPAIR TABLE table_name; OPTIMIZE TABLE table_name;
This can easily be done in one go using the command-line
mysqlcheck
utility:$ mysqlcheck -u root -p --auto-repair --optimize --all-databases
- [link1] https://wackowiki.org/doc/Dev/Release/R6.0/Upgrade/DatabaseConversion
- [link2] https://wackowiki.org/doc/Dev/Release/R6.0/Unicode/utf8mb4