sql >> Databasteknik >  >> RDS >> Mysql

Använder utf8mb4 med php och mysql

MySQL:s utf8 kodning är inte faktiska UTF-8. Det är en kodning som är ungefär som UTF-8, men som bara stöder en delmängd av vad UTF-8 stöder. utf8mb4 är verklig UTF-8. Denna skillnad är en intern implementeringsdetalj av MySQL. Båda ser ut som UTF-8 på PHP-sidan. Oavsett om du använder utf8 eller utf8mb4 , PHP kommer att få giltig UTF-8 i båda fallen.

Det du behöver se till är att anslutningskodningen mellan PHP och MySQL är satt till utf8mb4 . Om den är inställd på utf8 , MySQL kommer inte att stödja alla tecken. Du ställer in denna anslutningskodning med mysql_set_charset() , PDO charset DSN-anslutningsparameter eller vilken annan metod som helst som är lämplig för ditt valda databas-API.

mb_internal_encoding ställer bara in standardvärdet för $encoding parameter alla mb_* funktioner har. Det har inget med MySQL att göra.

UTF-8 och UTF-32 skiljer sig åt i hur de kodar tecken. UTF-8 använder ett minimum på 1 byte för ett tecken och högst 4. UTF-32 alltid använder 4 byte för varje tecken. UTF-16 använder minst 2 byte och maximalt 4.
På grund av sin varierande längd har UTF-8 lite overhead. Ett tecken som kan kodas i 2 byte i UTF-16 kan ta 3 eller 4 i UTF-8; å andra sidan använder UTF-16 aldrig mindre än 2 byte. Om du lagrar mycket asiatisk text kan UTF-16 använda mindre lagringsutrymme. Om det mesta av din text är engelska/ASCII, använder UTF-8 mindre lagringsutrymme. UTF-32 använder alltid mest lagringsutrymme.



  1. Få kuvert, dvs överlappande tidsintervall

  2. Kan jag återanvända ett uttryck i en MySQL-fråga som en variabel för ett annat fält?

  3. Mysql - återanvändning av beräknade värden

  4. Beräkna antalet poster för varje datum mellan 2 datum