Bộ chuyển đổi Emoji Unicode

Chuyển đổi các emoji thành các điểm mã Unicode (U+XXXX) hoặc dán các điểm mã để có được emoji.

Emoji → Unicode

Unicode → Emoji

Chi tiết ký tự

Chuyển đổi một emoji ở trên để xem chi tiết các ký tự.

Cách sử dụng

  1. Nhập một emoji hoặc một điểm mã: dán một ký tự emoji hoặc gõ điểm mã Unicode của nó (vd: U+1F600).
  2. Xem tất cả các biểu diễn: công cụ hiển thị mã thập phân, giá trị hex, thực thể HTML, escape CSS, byte UTF-8 và chuỗi escape JavaScript.
  3. Sao chép bất kỳ định dạng nào: nhấp vào một kết quả để sao chép nó ngay lập tức để sử dụng trong HTML, CSS hoặc JavaScript.

Tại sao sử dụng bộ chuyển đổi Emoji Unicode?

Các emoji được mã hóa thành các điểm Unicode, nhưng mỗi hệ thống sử dụng một định dạng khác nhau. HTML cần các thực thể 😀 hoặc 😀. Các pseudo-element CSS cần dạng escape \1F600. Các chuỗi JavaScript cần \u{1F600}. Tìm chúng bằng tay rất tốn công, công cụ này tạo mỗi định dạng ngay lập tức từ một đầu vào emoji đơn giản. Các nhà phát triển, nhà thiết kế và người sáng tạo nội dung sử dụng nó để nhúng các emoji một cách an toàn vào mã nơi sao chép-dán các ký tự thô có thể gây ra các vấn đề về mã hóa.

Các định dạng đầu ra được hỗ trợ

Lịch sử ngắn về emoji và những điều mọi người hiểu sai

Câu chuyện nguồn gốc được nhắc lại nhiều nhất ghi công Shigetaka Kurita tại NTT DoCoMo là người tạo ra «emoji đầu tiên» vào năm 1998-1999. Câu chuyện đó đúng nhưng chưa đầy đủ. Hai sự phát triển trước Kurita xứng đáng được đề cập:

Cách emoji lan rộng ra phần còn lại của thế giới

Trong một thập kỷ sau bộ của Kurita, emoji là hiện tượng nhà mạng Nhật Bản, với ba bộ nhà cung cấp cạnh tranh và không tương thích (DoCoMo, KDDI, SoftBank). Sự lan rộng xảy ra theo ba giai đoạn:

Công việc chuẩn hóa của Unicode Consortium diễn ra song song. Tháng 10 năm 2010, Unicode 6.0 là phiên bản đầu tiên của tiêu chuẩn bổ sung emoji như một bộ được công nhận, đóng góp khoảng 722 emoji từ liên hiệp các bộ nhà mạng Nhật Bản. Tháng 8 năm 2014, Unicode Technical Report #51 được xuất bản (sau đó được nâng lên UTS #51 vào tháng 5 năm 2017), đặc tả chính thức về cách emoji được mã hóa, sắp xếp và trình bày.

Tại sao hầu hết code point emoji nằm trên U+FFFF

Unicode tổ chức mọi ký tự thành 17 «mặt phẳng», mỗi mặt phẳng gồm 65.536 code point. Plane 0 là Mặt phẳng Đa ngôn ngữ Cơ bản (BMP), từ U+0000 đến U+FFFF. Hầu hết ngôn ngữ viết thường ngày nằm ở đây. Plane 1-16 là các mặt phẳng bổ sung (thường gọi là «mặt phẳng astral»), từ U+10000 đến U+10FFFF. Đại đa số emoji sống trong Plane 1, Mặt phẳng Đa ngôn ngữ Bổ sung, cụ thể trong các khối như Biểu tượng cảm xúc (U+1F600-U+1F64F), Ký hiệu và Hình ảnh Linh tinh (U+1F300-U+1F5FF), Ký hiệu Giao thông và Bản đồ (U+1F680-U+1F6FF), và Ký hiệu và Hình ảnh Bổ sung (U+1F900-U+1F9FF). Khối Ký hiệu và Hình ảnh Mở rộng-A mới hơn nằm ở U+1FA70-U+1FAFF.

Điều này quan trọng với lập trình viên vì UTF-16. UTF-16 mã hóa code point BMP thành một đơn vị 16-bit, nhưng code point bổ sung phải được mã hóa thành cặp surrogate: hai đơn vị 16-bit, một từ dải high-surrogate U+D800-U+DBFF và một từ dải low-surrogate U+DC00-U+DFFF. Kiểu string của JavaScript nội bộ là UTF-16, đó là lý do tại sao "😀".length trả về 2 thay vì 1: engine đang đếm code unit, không phải code point. Code JS hiện đại dùng Array.from("😀").length hoặc API Intl.Segmenter để đếm grapheme cluster chính xác.

UTF-8 xử lý cùng emoji đó bằng chuỗi 4 byte. Ký tự 😀 (U+1F600) là F0 9F 98 80 trong UTF-8. Đó là lý do tại sao bộ ký tự utf8 cũ của MySQL (thực ra là utf8mb3, giới hạn ở chuỗi 3 byte) không thể lưu emoji, bạn cần utf8mb4. MySQL 8.0 đặt utf8mb4 làm mặc định, nhưng các cơ sở dữ liệu cũ vẫn thất bại khi lưu emoji và lặng lẽ cắt ngắn hoặc báo lỗi tùy thuộc vào SQL mode. Đây là lỗi thực tế thường gặp.

Bộ chọn biến thể, tại sao cùng một trái tim có thể trông đen hoặc đỏ

Một số ít ký tự Unicode có «tính cách kép»: chúng có thể xuất hiện dưới dạng ký hiệu văn bản đơn sắc thuần túy hoặc dưới dạng emoji đầy màu sắc, tùy thuộc vào ngữ cảnh. Hai bộ chọn trình bày được thêm vào Unicode 3.2 (tháng 3 năm 2002): U+FE0F (Variation Selector-16, VS16) yêu cầu trình bày emoji, và U+FE0E (VS15) yêu cầu trình bày văn bản. Ví dụ: (U+2764, «Heavy Black Heart») là ký hiệu mặc định văn bản; ❤️ (U+2764 U+FE0F) là trái tim đỏ trình bày emoji mà hầu hết ứng dụng render có màu. Cùng một code point có và không có VS16 trông hoàn toàn khác nhau.

Một ví dụ nổi tiếng liên quan là mặt trời. U+2600 «Black Sun With Rays» mặc định theo kiểu văn bản đơn sắc; thêm VS16 (U+2600 U+FE0F) cho ra ☀️ đầy màu sắc. Ngược lại, U+1F31E «Sun With Face» là một code point riêng biệt được thêm vào Unicode 6.0 (tháng 10 năm 2010), mặc định trình bày emoji, và render thành 🌞 mỉm cười mà không cần bộ chọn nào. Hai code point khác nhau, hai lịch sử khác nhau, cả hai đều được gọi không chính thức là «mặt trời emoji.»

Bộ chỉnh màu da và thang Fitzpatrick

Vào Unicode 8.0 (phát hành ngày 17 tháng 6 năm 2015), tiêu chuẩn đã thêm năm ký tự chỉnh sửa điều chỉnh màu da của bất kỳ emoji nào hiển thị hình người. Các chỉnh sửa dựa trên thang Fitzpatrick, phân loại da liễu được phát triển năm 1975 bởi bác sĩ da liễu người Mỹ Thomas B. Fitzpatrick tại Harvard. Thang y tế có sáu loại (I đến VI). Cho mục đích emoji, loại I và II được gộp thành một chỉnh sửa duy nhất, để lại năm chỉnh sửa emoji:

Cách dùng là theo vị trí: chỉnh sửa đến ngay sau một emoji người được hỗ trợ. Ví dụ, 👋 (U+1F44B, waving hand) + U+1F3FD tạo ra 👋🏽, làn sóng tay tông trung bình. Nếu font của người nhận không hỗ trợ tổ hợp base+chỉnh sửa cụ thể đó, chỉnh sửa render thành một hình vuông nâu riêng biệt, một chế độ lỗi phổ biến trên các hệ thống cũ.

Chuỗi Zero-Width Joiner) cách emoji phức hợp được tạo ra

Zero-Width Joiner, code point U+200D, là ký tự «keo» cho phép nhiều emoji kết hợp thành một glyph tổng hợp khi renderer nhận ra chuỗi. ZWJ vô hình và không có độ rộng, nó tồn tại thuần túy để báo hiệu cho rendering engine rằng các ký tự xung quanh nên hợp nhất. Ba mẫu chiếm ưu thế:

Được sử dụng nhiều trong Unicode 15.1 (phát hành ngày 12 tháng 9 năm 2023): 118 emoji mới được thêm trong 15.1, trong đó 108 là biến thể có hướng của emoji hiện có (người quay mặt phải thay vì trái mặc định). Quan trọng là, 15.1 thêm không có code point cơ sở mới nào: mọi emoji mới đều là chuỗi được tạo từ các thành phần hiện có.

Keycap, chỉ báo vùng và cơ chế cờ

Chuỗi keycap. Một emoji keycap như 1️⃣ được tạo từ ba code point: một chữ số (U+0031 = «1»), VS16 (U+FE0F), và ký tự Combining Enclosing Keycap U+20E3. Combining keycap được phê duyệt là một phần của Unicode 3.0 năm 1999. Bộ đầy đủ emoji keycap bao gồm 0-9 cộng #*. Chuỗi ba ký tự này gây nhầm lẫn cho các kiểm tra .length ngây thơ mọi lúc.

Cặp chỉ báo vùng (cờ). Unicode không mã hóa cờ quốc gia thành các ký tự đơn. Thay vào đó, nó định nghĩa 26 Ký hiệu Chỉ báo Vùng, code point U+1F1E6 đến U+1F1FF, mỗi ký hiệu tương ứng với một chữ cái Latin A đến Z. Một cờ là một cặp chỉ báo vùng đánh vần mã quốc gia ISO 3166-1 alpha-2. Cờ Pháp 🇫🇷 là U+1F1EB U+1F1F7: chữ cái chỉ báo vùng F và R. Trong 26 × 26 = 676 cặp có thể, chỉ khoảng 270 tương ứng với mã quốc gia ISO hợp lệ; phần còn lại render thành hai ký hiệu chữ cái trên hầu hết các nền tảng.

Các phiên bản emoji gần đây, tóm tắt

Thiết kế nhà cung cấp, cùng code point, khác hình ảnh

Unicode chuẩn hóa ý nghĩacode point, không bao giờ là hình ảnh. Mỗi nền tảng có font emoji riêng, và sự khác biệt trực quan đủ thực để gây ra hiểu lầm được ghi nhận trong các nghiên cứu học thuật (Hecht et al., CSCW 2018, về hiểu sai emoji xuyên nền tảng). Các font chính:

Khi font của thiết bị không có glyph cho một code point hoặc chuỗi cụ thể, trình duyệt và hệ điều hành hiển thị một hình chữ nhật trống, thường được gọi là tofu. Tofu là tín hiệu mạnh nhất có thể rằng thiết bị của người nhận cũ hơn của người gửi. Các emoji mới thường mất từ sáu đến mười tám tháng để lan rộng từ khi Unicode phát hành đến tất cả các nền tảng lớn.

Khả năng tiếp cận, những gì tác giả nội dung cần biết

Các trình đọc màn hình hiện đại (NVDA, JAWS, VoiceOver, TalkBack) đọc ra tên rút gọn CLDR của mỗi emoji từ Unicode Common Locale Data Repository, ví dụ «grinning face» cho 😀, «family: man, woman, girl, boy» cho 👨‍👩‍👧‍👦. Unicode CLDR duy trì tên rút gọn và từ khóa chính thức bằng hơn 90 ngôn ngữ, được mọi trình đọc màn hình lớn trên nền tảng Apple và Microsoft sử dụng. Kỹ thuật WCAG H86 khuyến nghị bọc emoji có ý nghĩa trong <span role="img" aria-label="thumbs up">👍</span>; emoji trang trí nên được ẩn với aria-hidden="true". Ba cạm bẫy: emoji lặp lại trở nên dài dòng (😂😂😂😂😂 đọc là «Face with tears of joy» năm lần); biểu tượng cảm xúc kiểu văn bản (:)) đọc là «colon close-paren» mà không có tên rút gọn Unicode; chỉnh màu da được đọc to (👋🏽 đọc là «waving hand: medium skin tone», có thông tin nhưng chậm hơn).

Emojipedia và cơ sở hạ tầng văn hóa

Emojipedia được thành lập năm 2013 bởi Jeremy Burge, một nhà thiết kế người Úc đã đăng ký tên miền ngẫu hứng sau một bữa tiệc sinh nhật. Đây hiện là trang web tham khảo thực tế về ý nghĩa emoji, thiết kế nhà cung cấp và đưa tin về phát hành, phục vụ khoảng 590 triệu lượt xem trang vào năm 2021. Burge tham gia Tiểu ban Emoji Unicode, từng là «Chief Emoji Officer» của Emojipedia đến năm 2022, và tạo ra Ngày Emoji Thế giới (17 tháng 7): được chọn vì emoji lịch Apple 📅 hiển thị ngày 17 tháng 7, bản thân đó là gật đầu với ngày ra mắt gốc của Apple iCal tại Macworld Expo năm 2002. Emojipedia được mua lại bởi Zedge, Inc. (NYSE: ZDGE) vào tháng 8 năm 2021 và tiếp tục hoạt động dưới cùng thương hiệu. Tiểu ban Emoji Unicode, đánh giá các đề xuất emoji mới, hiện được chủ trì bởi Jennifer Daniel, cựu trưởng thiết kế của Google, là người phụ nữ đầu tiên đảm nhận vị trí chủ tịch tiểu ban.

Số tham khảo nhanh

Công cụ liên quan

Bộ chọn emoji miễn phí Bộ mã hóa / Giải mã thực thể HTML Trình Phiên Dịch Mã Morse Bộ đếm ký tự