sql >> Database teknologi >  >> RDS >> Mysql

Bruger utf8mb4 med php og mysql

MySQL's utf8 kodning er ikke faktiske UTF-8. Det er en kodning, der er lidt ligesom UTF-8, men som kun understøtter en delmængde af, hvad UTF-8 understøtter. utf8mb4 er faktisk UTF-8. Denne forskel er en intern implementeringsdetalje af MySQL. Begge ligner UTF-8 på PHP-siden. Om du bruger utf8 eller utf8mb4 , vil PHP få gyldig UTF-8 i begge tilfælde.

Det du skal sikre dig er, at forbindelseskodningen mellem PHP og MySQL er sat til utf8mb4 . Hvis den er indstillet til utf8 , MySQL understøtter ikke alle tegn. Du indstiller denne forbindelseskodning ved hjælp af mysql_set_charset() , PDO charset DSN-forbindelsesparameter eller en hvilken som helst anden metode, der passer til din valgte database-API.

mb_internal_encoding indstiller bare standardværdien for $encoding parameter alle mb_* funktioner har. Det har intet at gøre med MySQL.

UTF-8 og UTF-32 adskiller sig i, hvordan de koder tegn. UTF-8 bruger et minimum på 1 byte for et tegn og maksimalt 4. UTF-32 altid bruger 4 bytes for hvert tegn. UTF-16 bruger minimum 2 bytes og maksimalt 4.
På grund af sin variable længde har UTF-8 en lille smule overhead. Et tegn, der kan kodes i 2 bytes i UTF-16, kan tage 3 eller 4 i UTF-8; på den anden side bruger UTF-16 aldrig mindre end 2 bytes. Hvis du gemmer masser af asiatisk tekst, kan UTF-16 bruge mindre lagerplads. Hvis det meste af din tekst er engelsk/ASCII, bruger UTF-8 mindre lagerplads. UTF-32 bruger altid mest lagerplads.



  1. Node Mysql kan ikke stille en forespørgsel i kø efter at have kaldt quit

  2. (har brug for råd) Tal med MySQL-serverdatabasen fra min Android-app

  3. Batch flere udvalgte erklæringer, når du ringer til Oracle fra ADO.NET

  4. Sådan sender du en databaseværdi i et hyperlink ved hjælp af PHP + HTML