Krátká odpověď
Spusťte klienta s volbou --default-character-set=utf8 :
mysql --default-character-set=utf8
Toto můžete nastavit jako výchozí v /etc/mysql/my.cnf soubor.
[mysql]
default-character-set=utf8
Krátká odpověď nefungovala, přečtěte si níže
Výše uvedený příkaz vynutí character_set_client , character_set_connection a character_set_results konfigurační proměnné na utf8 .
Chcete-li zkontrolovat hodnoty všech konfiguračních proměnných souvisejících se znakovou sadou, můžete spustit:
show variables like '%char%';
character_set_database vám poskytuje znakovou sadu aktuální databáze (schéma), ve které se nacházíte. Schéma a tabulky jsou standardně vytvořeny se znakovou sadou zadanou v character_set_server , pokud to není výslovně uvedeno v CREATE prohlášení.
character_set_server lze změnit v my.cnf soubor:
[mysqld]
character-set-server = utf8
Navíc tabulky a sloupce mohou mít svou vlastní znakovou sadu, která se může lišit od jejich nadřazené tabulky nebo schématu. Chcete-li konkrétně zkontrolovat hodnoty každé tabulky a sloupce v databázi, podívejte se na tuto odpověď:Jak zjistím, jaká znaková sada je databáze / tabulka / sloupec MySQL?
Pokud chcete změnit znakovou sadu existujících tabulek a sloupců, přečtěte si tuto odpověď:Jak převést celou znakovou sadu MySQL databáze a řazení do UTF-8?
Další informace o znakových sadách připojení v dokumentaci mysql .
Vše je nastaveno na utf8, ale stále vidím divné znaky
I když jsou všechny proměnné, tabulky a sloupce znakových sad nastaveny na utf8 , mohou nastat případy, kdy na obrazovce uvidíte podivné znaky. Někdo mohl například napsat znaky Unicode do utf8 prostřednictvím klienta s latin1 připojení (například spuštěním mysql --default-character-set=latin1 ). V tomto případě se musíte připojit k databázi se stejnou znakovou sadou, jakou byly zapsány hodnoty. Můžete je také načíst a přepsat pomocí správného kódování.
POZNÁMKA :Jak zdůrazňují komentáře, mysql utf8 kódování není skutečnou a úplnou implementací UTF-8. Pokud je potřeba plná implementace UTF-8, lze použít utf8mb4 znaková sada:
mysql --default-character-set=utf8mb4
Více informací zde:Jaký je rozdíl mezi znakovými sadami utf8mb4 a utf8 v MySQL?