sql >> Databasteknik >  >> RDS >> Mysql

Hur man får MySQL att hantera UTF-8 korrekt

Uppdatering:

Kort svar - Du bör nästan alltid använda utf8mb4 teckenuppsättning och utf8mb4_unicode_ci sammanställning.

För att ändra databas:

ALTER DATABASE dbname CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

Se:

Ursprungligt svar:

MySQL 4.1 och senare har en standardteckenuppsättning UTF-8. Du kan verifiera detta i din my.cnf fil, kom ihåg att ställa in båda klient och server (default-character-set och character-set-server ).

Om du har befintliga data som du vill konvertera till UTF-8, dumpa din databas och importera tillbaka den som UTF-8 och se till att:

  • använd SET NAMES utf8 innan du frågar/infogar i databasen
  • använd DEFAULT CHARSET=utf8 när du skapar nya tabeller
  • vid det här laget bör din MySQL-klient och server vara i UTF-8 (se my.cnf ). kom ihåg att alla språk du använder (som PHP) måste vara UTF-8 också. Vissa versioner av PHP kommer att använda sitt eget MySQL-klientbibliotek, som kanske inte känner till UTF-8.

Om du vill migrera befintliga data kom ihåg att säkerhetskopiera först! Massor av konstig hackning av data kan hända när saker och ting inte går som planerat!

Några resurser:



  1. ORA-12705:Kan inte komma åt NLS-datafiler eller ogiltig miljö

  2. ORA-00911:ogiltigt tecken

  3. Hur man skapar en klon av ditt MySQL- eller PostgreSQL-databaskluster

  4. SQLite CROSS JOIN med ett praktiskt exempel