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?