Кратък отговор
Стартирайте клиента с опция --default-character-set=utf8 :
mysql --default-character-set=utf8
Можете да зададете това по подразбиране в /etc/mysql/my.cnf файл.
[mysql]
default-character-set=utf8
Краткият отговор не работи, прочетете по-долу
Командата по-горе принуждава character_set_client , character_set_connection и character_set_results конфигурационните променливи да бъдат utf8 .
За да проверите стойностите за всички конфигурационни променливи, свързани с набор от знаци, можете да изпълните:
show variables like '%char%';
character_set_database ви дава набора от знаци на текущата база данни (схема), в която се намирате. Схемата и таблиците се създават по подразбиране с набора от знаци, посочен в character_set_server , освен ако не е посочен изрично в CREATE изявление.
character_set_server може да се промени в my.cnf файл:
[mysqld]
character-set-server = utf8
Освен това таблиците и колоните могат да имат свой собствен набор от знаци, който може да се различава от тяхната родителска таблица или схема. За да проверите конкретно стойностите на всяка таблица и колона в база данни, вижте този отговор:Как да видя какъв набор от знаци представлява MySQL база данни/таблица/колона?
Ако искате да промените набора от знаци на съществуващите таблици и колони, вижте този отговор:Как да конвертирам цял набор от символи и съпоставяне на MySQL база данни в UTF-8?
Повече информация за наборите от символи за връзка в документацията на mysql .
Всичко е настроено на utf8, но все още виждам странни знаци
Дори ако всички променливи, таблици и колони са зададени на utf8 , може да има случаи, когато виждате странни знаци на екрана си. Например, някой може да е написал Unicode символи в utf8 колона, чрез клиент с latin1 връзка (например чрез стартиране на mysql --default-character-set=latin1 ). В този случай трябва да се свържете към базата данни със същия набор от знаци, както са били записани стойностите. Можете също да ги извлечете и пренапишете чрез правилното кодиране.
ЗАБЕЛЕЖКА :Както посочват коментарите, mysql utf8 кодирането не е истинска и пълна реализация на UTF-8. Ако е необходима пълна реализация на UTF-8, може да се използва utf8mb4 набор от знаци:
mysql --default-character-set=utf8mb4
Повече информация тук:Каква е разликата между utf8mb4 и utf8 набори знаци в MySQL?