Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Kopiowanie emotikonów w tekście z MySQL do SQL Server

Kodem Unicode znaku 🤘 jest U+1F918 , co oznacza, że ​​znajduje się poza Podstawową płaszczyzną wielojęzyczną (BMP) Unicode, który obejmuje punkty kodowe do U+FFFF.

Aby przetwarzać znaki Unicode poza BMP, musisz zastosować kolacje obsługujące znaki uzupełniające , nazwany jako *_SC :

Porównaj wyniki tego polecenia SQL

select 
    nchar(unicode(N'🤘' collate Latin1_General_100_CI_AS_SC)) as EmojiSC, 
    unicode(N'🤘' collate Latin1_General_100_CI_AS_SC) as EmojiSCUnicode, 
    cast(N'🤘' as varbinary) as EmojiBinary, 
    cast(nchar(unicode(N'🤘')) as varbinary) as EmojiConvBinary,
    unicode(N'🤘') as EmojiUnicode

jak uruchomić w bazie danych przy użyciu Latin1_General_CI_AS

EmojiSC EmojiSCUnicode  EmojiBinary EmojiConvBinary EmojiUnicode
NULL    129304          0x3ED818DD  0x3ED8          55358

w porównaniu z bazą danych ustawioną na Latin1_General_100_CI_AI_SC

EmojiSC EmojiSCUnicode  EmojiBinary EmojiConvBinary EmojiUnicode
🤘      129304          0x3ED818DD  0x3ED818DD      129304

Dlaczego widzisz „🤘 „?

Kodowanie UTF-8 U+1F918 to 0xF0 0x9F 0xA4 0x98 , a znaki są wynikiem interpretacji tych kodów jako znaki ANSI .

Dlaczego widzisz „�”?

Znak � to ZAMIENNIK i jest

a to dlatego, że U+D83E nie jest prawidłowym punktem kodowym Unicode , ale pierwsze słowo punktu kodowego zakodowane jako UTF-16 (0xD83E 0xDD18 ).

Sprawdź, co jest przechowywane, a nie wyświetlane

Wyświetlanie danych Unicode może być trudne, a najskuteczniejszym sposobem sprawdzenia, co się dzieje pod maską, jest spojrzenie na bajty. W TSQL użyj cast(... as varbinary) analizować, gdzie manipulacja danymi Unicode idzie nie tak.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy plik my.ini znajduje się w złym miejscu?

  2. Najprostszy przypadek mapy jeden-do-wielu w Hibernate nie działa w MySQL

  3. BŁĄD 2006 (HY000):Serwer MySQL zniknął

  4. tablica dla wielu warunków where_in w codeigniter

  5. Synchronizacja baz danych online/offline — MySQL/PHP