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

Konečné schéma kódování emotikonů

utf8 MySQL znaková sada ve skutečnosti není UTF-8 , je to podmnožina UTF-8 podporující pouze základní rovinu (znaky až do U+FFFF). Většina emotikonů používá kódové body vyšší než U+FFFF. utf8mb4 MySQL je skutečné UTF-8 který dokáže zakódovat všechny tyto kódové body. Mimo MySQL neexistuje nic takového jako „utf8mb4“, existuje pouze UTF-8. Takže:

Opět žádná taková věc jako "utf8mb4". Požadavky HTTP POST podporují všechny nezpracované bajty, pokud váš klient odesílá data v kódování UTF-8, jste v pořádku.

Ano.

Bože ne, použij raw UTF-8 (utf8mb4 ) za všechno, co je svaté.

No, to je tvůj problém; přesměrování vašich dat přes utf8 MySQL znaková sada zahodí všechny znaky nad U+FFFF. Použijte utf8mb4 celou cestu přes MySQL.

Budete muset specifikovat, co to přesně znamená. Funkce JSON PHP by měly být schopny zpracovat jakýkoli kód Unicode v pohodě, pokud je platný UTF-8:

echo json_encode('😀');
"\ud83d\ude00"

echo json_decode('"\ud83d\ude00"');
😀


  1. Jak PostgreSQL vynucuje omezení UNIQUE / jaký typ indexu používá?

  2. alternativa k listagg v Oracle?

  3. SQL index DROP, tabulka DROP a příkazy databáze DROP vysvětlené s příklady

  4. PostgreSQL na vzestupu:2018 Postgres Findings &2019 Trends