Krótka odpowiedź
Uruchom klienta z opcją --default-character-set=utf8
:
mysql --default-character-set=utf8
Możesz ustawić to jako domyślne w /etc/mysql/my.cnf
plik.
[mysql]
default-character-set=utf8
Krótka odpowiedź nie zadziałała, przeczytaj poniżej
Powyższe polecenie wymusza character_set_client
, character_set_connection
i character_set_results
konfiguruj zmienne na utf8
.
Aby sprawdzić wartości wszystkich zmiennych konfiguracyjnych związanych z zestawem znaków, możesz uruchomić:
show variables like '%char%';
character_set_database
daje zestaw znaków bieżącej bazy danych (schematu), w której się znajdujesz. Schemat i tabele są tworzone domyślnie z zestawem znaków określonym w character_set_server
, chyba że jest to wyraźnie określone w CREATE
oświadczenie.
character_set_server
można zmienić w my.cnf
plik:
[mysqld]
character-set-server = utf8
Dodatkowo tabele i kolumny mogą mieć własny zestaw znaków, który może różnić się od ich tabeli nadrzędnej lub schematu. Aby dokładnie sprawdzić wartości każdej tabeli i kolumny w bazie danych, zobacz tę odpowiedź:Jak mogę sprawdzić, jakim zestawem znaków jest baza danych / tabela / kolumna MySQL?
Jeśli chcesz zmienić zestaw znaków istniejących tabel i kolumn, zobacz tę odpowiedź:Jak przekonwertować cały zestaw znaków bazy danych MySQL i porównywanie do UTF-8?
Więcej informacji na temat zestawów znaków połączenia w dokumentacji mysql .
Wszystko jest ustawione na utf8, ale wciąż widzę dziwne znaki
Nawet jeśli wszystkie zmienne, tabele i kolumny zestawów znaków są ustawione na utf8
, może się zdarzyć, że na ekranie zobaczysz dziwne postacie. Na przykład ktoś mógł napisać znaki Unicode w utf8
kolumna, przez klienta z latin1
połączenie (na przykład uruchamiając mysql --default-character-set=latin1
). W takim przypadku musisz połączyć się z bazą danych za pomocą tego samego zestawu znaków, w jakim zostały zapisane wartości. Możesz także odzyskać i przepisać je za pomocą prawidłowego kodowania.
UWAGA :Jak wskazują komentarze, mysql utf8
kodowanie nie jest prawdziwą i pełną implementacją UTF-8. Jeśli potrzebna jest pełna implementacja UTF-8, można użyć utf8mb4
zestaw znaków:
mysql --default-character-set=utf8mb4
Więcej informacji tutaj:Jaka jest różnica między zestawami znaków utf8mb4 i utf8 w MySQL?