Kort antwoord
Start de client met optie --default-character-set=utf8
:
mysql --default-character-set=utf8
U kunt dit als standaard instellen in de /etc/mysql/my.cnf
bestand.
[mysql]
default-character-set=utf8
Het korte antwoord werkte niet, lees hieronder
Het bovenstaande commando dwingt de character_set_client
, character_set_connection
en character_set_results
configuratievariabelen als utf8
.
Om de waarden voor alle charset-gerelateerde configuratievariabelen te controleren, kunt u het volgende uitvoeren:
show variables like '%char%';
De character_set_database
geeft u de tekenset van de huidige database (schema) waarin u zich bevindt. Het schema en de tabellen worden standaard gemaakt met de tekenset die is opgegeven in de character_set_server
, tenzij het expliciet is gespecificeerd in de CREATE
verklaring.
De character_set_server
kan worden gewijzigd in de my.cnf
bestand:
[mysqld]
character-set-server = utf8
Bovendien kunnen tabellen en kolommen hun eigen tekenset hebben die kan verschillen van hun bovenliggende tabel of schema. Om specifiek de waarden van elke tabel en kolom in een database te controleren, zie dit antwoord:Hoe kan ik zien welke tekenset een MySQL-database/tabel/kolom is?
Als je de tekenset van bestaande tabellen en kolommen wilt wijzigen, bekijk dan dit antwoord:Hoe converteert u een volledige MySQL-databasekarakterset en sortering naar UTF-8?
Meer informatie over verbindingstekensets in de mysql-documentatie .
Alles is ingesteld op utf8, maar ik zie nog steeds rare tekens
Zelfs als alle karaktersetvariabelen, tabellen en kolommen zijn ingesteld op utf8
, kunnen er gevallen zijn waarin u vreemde tekens op uw scherm ziet. Iemand kan bijvoorbeeld Unicode-tekens hebben geschreven in een utf8
kolom, via een client met latin1
verbinding (bijvoorbeeld door mysql --default-character-set=latin1
uit te voeren ). In dit geval moet u verbinding maken met de database met dezelfde tekenset als de waarden zijn geschreven. Je kunt ze ook ophalen en herschrijven met de juiste codering.
OPMERKING :Zoals de opmerkingen aangeven, is de mysql utf8
codering is geen echte en volledige implementatie van UTF-8. Als een volledige implementatie van UTF-8 nodig is, kan men de utf8mb4
. gebruiken tekenset:
mysql --default-character-set=utf8mb4
Meer info hier:Wat is het verschil tussen utf8mb4- en utf8-tekensets in MySQL?