Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Menyalin emoji dalam teks dari MySQL ke SQL Server

Titik kode Unicode dari karakter adalah U+1F918 , yang berarti berada di luar Pesawat Multibahasa Dasar (BMP) Unicode, yang mencakup codepoint hingga U+FFFF.

Untuk memproses karakter Unicode di luar BMP, Anda perlu menerapkan kolasi yang mendukung Karakter Tambahan , bernama *_SC :

Bandingkan hasil pernyataan SQL ini

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

sebagai dijalankan terhadap database menggunakan Latin1_General_CI_AS

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

versus basis data yang disetel ke Latin1_General_100_CI_AI_SC

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

Mengapa Anda melihat "🤘 "?

Encoding UTF-8 U+1F918 adalah 0xF0 0x9F 0xA4 0x98 , dan karakter tersebut adalah hasil dari interpretasi kode ini sebagai karakter ANSI .

Mengapa Anda melihat "�"?

Karakter � adalah Unicode KARAKTER PENGGANTIAN dan adalah

dan itu karena U+D83E bukan codepoint Unicode yang valid , tetapi kata pertama dari codepoint yang dikodekan sebagai UTF-16 (0xD83E 0xDD18 ).

Periksa apa yang disimpan, bukan apa yang ditampilkan

Menampilkan data Unicode bisa jadi rumit, dan cara paling efisien untuk mengetahui apa yang terjadi adalah dengan melihat byte. Di TSQL, gunakan cast(... as varbinary) untuk menganalisis kesalahan manipulasi data 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. gcc tidak akan mengkompilasi dan menjalankan perpustakaan MySQL C

  2. Skrip PHP untuk mengisi tabel MySQL

  3. Mengapa kueri tidak diperbarui setelah mengklik tombol perbarui?

  4. Setel group_concat_max_len pada kueri PDO

  5. Masalah MySQL 'DI MANA DAN'