Mysql
 sql >> база данни >  >> RDS >> Mysql

Най-добрата схема за кодиране на емоджи

utf8 на MySQL charset всъщност не е UTF-8 , това е подмножество от UTF-8, поддържащо само основната равнина (символи до U+FFFF). Повечето емоджи използват кодови точки, по-високи от U+FFFF. utf8mb4 на MySQL е действителен UTF-8 който може да кодира всички тези кодови точки. Извън MySQL няма такова нещо като "utf8mb4", има само UTF-8. И така:

Отново няма такова нещо като "utf8mb4". HTTP POST заявките поддържат всякакви необработени байтове, ако клиентът ви изпраща данни, кодирани с UTF-8, всичко е наред.

Да.

Господи, не, използвайте необработен UTF-8 (utf8mb4 ) за всичко свято.

Е, това е вашият проблем; канализиране на вашите данни чрез utf8 на MySQL charset ще изхвърли всички знаци над U+FFFF. Използвайте utf8mb4 чак през MySQL.

Ще трябва да уточните какво точно означава това. JSON функциите на PHP трябва да могат да се справят добре с всяка кодова точка на Unicode, стига да е валиден UTF-8:

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

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. com.mysql.jdbc.PacketTooBigException java

  2. CREATE TABLE MySQL срещу T-SQL с примери за синтаксис

  3. множество добавени обекти може да имат един и същ първичен ключ в базата данни

  4. Mysql има ли еквивалент на @@ROWCOUNT като в mssql?

  5. Python pandas to_sql 'append'