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

Копиране на емотикони в текст от MySQL към SQL Server

Кодовата точка на Unicode на знака 🤘 е U+1F918 , което означава, че е извън Основна многоезична равнина (BMP) на Unicode, който покрива кодови точки до U+FFFF.

За да обработвате Unicode знаци извън BMP, трябва да приложите колации, поддържащи допълнителни знаци , именуван като *_SC :

Сравнете резултатите от този 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

като стартиране срещу база данни с помощта на Latin1_General_CI_AS

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

спрямо база данни, зададена на Latin1_General_100_CI_AI_SC

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

Защо виждате „ðŸ¤˜ “?

UTF-8 кодирането на U+1F918 е 0xF0 0x9F 0xA4 0x98 , а знаците са резултат от тълкуването на тези кодове като ANSI знаци .

Защо виждате „�“?

Символът � е ЗАМЕСТОЯЩ ЗНАК от Unicode и е

и това е така, защото U+D83E е не е валидна Unicode кодова точка , но първата дума от кодовата точка, кодирана като UTF-16 (0xD83E 0xDD18 ).

Проверете какво се съхранява, а не какво се показва

Показването на Unicode данни може да бъде трудно и най-ефективният начин да разберете какво се случва под капака е да погледнете байтовете. В TSQL използвайте cast(... as varbinary) за да анализирате къде манипулирането на Unicode данни се обърка.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP/HTML Добавяне на бутон за премахване

  2. Попълване на модално съдържание с помощта на PHP и AJAX?

  3. Заключваща маса за четене и писане

  4. Как да запазите автоматично селекцията в ComboBox в MYSQL в PHP без бутон за изпращане?

  5. Как да коригирам неразрешен външен символ поради MySql Connector C++?