Проблемът с кодирането на символи в MySQL е, когато вашата MySQL база данни причинява UTF8 знаци (като å, ä и ö) да се показват погрешно. Това е така, защото по подразбиране MySQL използва набор от символи latin1. Този проблем стана важен поради глобалния характер на уеб съдържанието в наши дни. Можете да го разрешите, като зададете кодирането на MySQL на UTF8. Това може да стане по няколко начина.
- Изпълнете заявка „SET NAMES ‘utf8’” в началото на всяка връзка – това ще принуди MySQL да използва UTF8 за целия живот на тази връзка. Това е добър вариант, ако нямате достъп до файла my.cnf (linux/mac) / my.ini (windows).
- Намерете и редактирайте файла my.cnf (linux/mac) / my.ini (windows) на вашия сървър на база данни. Добавете следните редове към mysqld раздел :[mysqld] default-character-set=utf8 skip-character-set-client-handshake Сега, ако рестартирате MySQL сървъра, кодирането на символи в MySQL трябва по подразбиране да е UTF8
- Ами ако вече имате база данни? Как да конвертирам съдържанието му в UTF8? Можете да използвате следните 3 заявки. Заменете DATABASE_NAME, TABLE_NAME и FIELD_NAME с вашите стойности. alter table TABLE_NAME модифицира FIELD_NAME blob; промяна на база данни DATABASE_NAME charset=utf8; alter table TABLE_NAME модифицира FIELD_NAME varchar(255) набор от знаци utf8; Преобразувайте полето в BLOB, това е двоичен тип поле. След това променяме набора от символи на базата данни на utf8. Накрая преобразуваме нашето поле обратно в текст или varchar.
Можете да проверите кодирането на символите си в MySQL със следната заявка.
По подразбиране MySQL кодиране на символи
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | latin1 | | character_set_connection | latin1 | | character_set_database | latin1 | | character_set_filesystem | binary | | character_set_results | latin1 | | character_set_server | latin1 | | character_set_system | latin1 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Задължително MySQL кодиране на знаци
mysql> show variables like 'char%'; +--------------------------+----------------------------+ | Variable_name | Value | +--------------------------+----------------------------+ | character_set_client | utf8 | | character_set_connection | utf8 | | character_set_database | utf8 | | character_set_filesystem | binary | | character_set_results | utf8 | | character_set_server | utf8 | | character_set_system | utf8 | | character_sets_dir | /usr/share/mysql/charsets/ | +--------------------------+----------------------------+ 8 rows in set (0.00 sec)
Също така ще трябва да се уверите, че вашата програмна рамка като Django, Code Igniter и т.н. използва UTF8 кодиране.