sql >> Database >  >> RDS >> Mysql

MySQL-opdrachtregelopmaak met UTF8

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?



  1. Snellere manier om via script in Oracle in te voegen?

  2. De meerdelige identifier kan niet worden gebonden

  3. Rethink Flask - Een eenvoudige takenlijst mogelijk gemaakt door Flask en RethinkDB

  4. Hoe een Oracle PL/SQL-object supermethode aan te roepen