sql >> Databáze >  >> RDS >> Mysql

Použití utf8mb4 s php a mysql

utf8 MySQL kódování není skutečné UTF-8. Je to kódování, které je trochu jako UTF-8, ale podporuje pouze podmnožinu toho, co podporuje UTF-8. utf8mb4 je skutečný UTF-8. Tento rozdíl je podrobností interní implementace MySQL. Oba vypadají na straně PHP jako UTF-8. Ať už používáte utf8 nebo utf8mb4 , PHP získá platné UTF-8 v obou případech.

Musíte se ujistit, že kódování připojení mezi PHP a MySQL je nastaven na utf8mb4 . Pokud je nastaveno na utf8 , MySQL nebude podporovat všechny znaky. Toto kódování připojení nastavíte pomocí mysql_set_charset() , charset PDO Parametr připojení DSN nebo jakákoli jiná metoda vhodná pro vámi zvolené rozhraní API databáze.

mb_internal_encoding pouze nastaví výchozí hodnotu pro $encoding parametr all mb_* funkce mají. Nemá to nic společného s MySQL.

UTF-8 a UTF-32 se liší v tom, jak kódují znaky. UTF-8 používá minimum 1 bajt pro znak a maximálně 4. UTF-32 vždy používá 4 bajty pro každý znak. UTF-16 používá minimálně 2 bajty a maximálně 4.
Kvůli své proměnlivé délce má UTF-8 trochu režii. Znak, který může být zakódován do 2 bajtů v UTF-16, může trvat 3 nebo 4 v UTF-8; na druhou stranu UTF-16 nikdy nepoužívá méně než 2 bajty. Pokud ukládáte hodně asijského textu, může UTF-16 zabrat méně místa. Pokud je většina vašeho textu angličtina/ASCII, UTF-8 zabere méně místa. UTF-32 vždy využívá nejvíce úložiště.



  1. Nativní Clustering ProxySQL s Kubernetes

  2. MySQL:Alternativy k ORDER BY RAND()

  3. MariaDB CURRENT_TIMESTAMP() Vysvětleno

  4. Co může způsobit změnu Oracle ROWID?