Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Sao chép biểu tượng cảm xúc trong văn bản từ MySQL sang SQL Server

Điểm mã Unicode của ký tự 🤘 là U + 1F918 , có nghĩa là nó nằm ngoài Mặt phẳng đa ngôn ngữ cơ bản (BMP) của Unicode, bao gồm các điểm mã lên đến U + FFFF.

Để xử lý các ký tự Unicode bên ngoài BMP, bạn cần áp dụng ảnh ghép hỗ trợ các ký tự bổ sung , được đặt tên là * _SC :

So sánh kết quả của câu lệnh SQL này

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

như chạy trên cơ sở dữ liệu bằng Latin1_General_CI_AS

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

so với cơ sở dữ liệu được đặt thành Latin1_General_100_CI_AI_SC

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

Tại sao bạn thấy "🤘 "?

Mã hóa UTF-8 của U + 1F918 là 0xF0 0x9F 0xA4 0x98 và các ký tự là kết quả của việc diễn giải các mã này là ký tự ANSI .

Tại sao bạn thấy "�"?

Ký tự � là Unicode KÝ TỰ THAY THẾ và là

và đó là vì U + D83E không phải là điểm mã Unicode hợp lệ , nhưng từ đầu tiên của điểm mã được mã hóa là UTF-16 (0xD83E 0xDD18 ).

Kiểm tra những gì được lưu trữ, không phải những gì được hiển thị

Việc hiển thị dữ liệu Unicode có thể phức tạp và cách hiệu quả nhất để tìm hiểu những gì đang diễn ra là xem xét các byte. Trong TSQL, sử dụng cast(... as varbinary) để phân tích nơi thao tác dữ liệu Unicode bị sai.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hai khóa chính được chỉ định trong cơ sở dữ liệu MySQL

  2. Bất ngờ đạt đến giới hạn bộ nhớ PHP chỉ với một truy vấn PDO?

  3. Ánh xạ tinyint dưới dạng boolean hibernate

  4. Máy chủ MySQL trên MAMP-Windows sẽ không khởi động

  5. Cách hiển thị đối chiếu máy chủ trong MySQL