محوّل الإيموجي إلى Unicode
الصق إيموجي، أو جملة كاملة فيها إيموجي، واحصل على كل صيغة يحتاجها المطوّر: نقاط ترميز Unicode، وكيانات HTML، وصيغ الهروب في CSS وJavaScript، وPython، وبايتات UTF-8 الخام. ويعمل المحوّل في الاتجاه المعاكس أيضًا. كل شيء يجري داخل متصفحك، ويوضح عدّاد الطول لماذا قد يُحتسب إيموجي واحد سبعة محارف في لغة وثمانية وعشرين بايتًا في أخرى.
- المحارف التي تراها
- 3
- نقاط الترميز (len في Python)
- 6
- وحدات UTF-16 (.length في JS)
- 10
- بايتات UTF-8
- 22
| نقاط ترميز Unicode | U+1F44D U+1F3FD U+2764 U+FE0F U+1F1EF U+1F1F5 | |
|---|---|---|
| كيان HTML (ست عشري) | 👍🏽❤️🇯🇵 | |
| كيان HTML (عشري) | 👍🏽❤️🇯🇵 | |
| خاصية content في CSS | \1F44D \1F3FD \2764 \FE0F \1F1EF \1F1F5 | |
| JavaScript (ES6) | \u{1F44D}\u{1F3FD}\u2764\uFE0F\u{1F1EF}\u{1F1F5} | |
| UTF-16 (Java وC# وJSON) | \uD83D\uDC4D\uD83C\uDFFD\u2764\uFE0F\uD83C\uDDEF\uD83C\uDDF5 | |
| Python | \U0001F44D\U0001F3FD\u2764\uFE0F\U0001F1EF\U0001F1F5 | |
| بايتات UTF-8 | F0 9F 91 8D F0 9F 8F BD E2 9D A4 EF B8 8F F0 9F 87 AF F0 9F 87 B5 | |
| ترميز URL | %F0%9F%91%8D%F0%9F%8F%BD%E2%9D%A4%EF%B8%8F%F0%9F%87%AF%F0%9F%87%B5 |
ثمانية إيموجي، وأربعة أطوال مختلفة
كل صف أدناه إيموجي واحد على الشاشة. أما الأعمدة الأخرى فهي ما تحسبه اللغات وقواعد البيانات المختلفة، وقد حسبها المحوّل نفسه المستخدم في الأداة أعلاه.
| الإيموجي | نقاط الترميز | المرئي | Python | JavaScript | بايتات UTF-8 |
|---|---|---|---|---|---|
| 😀نقطة ترميز واحدة | U+1F600 | 1 | 1 | 2 | 4 |
| ❤️رمز نصي مع محدد النمط | U+2764 U+FE0F | 1 | 2 | 2 | 6 |
| 👍🏽إيموجي مع لون البشرة | U+1F44D U+1F3FD | 1 | 2 | 4 | 8 |
| 🇯🇵حرفان من مؤشرات المناطق | U+1F1EF U+1F1F5 | 1 | 2 | 4 | 8 |
| 👩💻مربوط بوصلة صفرية العرض | U+1F469 U+200D U+1F4BB | 1 | 3 | 5 | 11 |
| 1️⃣رقم ومحدد ومفتاح | U+0031 U+FE0F U+20E3 | 1 | 3 | 3 | 7 |
| 🏴تسلسل وسوم | U+1F3F4 U+E0067 U+E0062 U+E0073 U+E0063 U+E0074 U+E007F | 1 | 7 | 14 | 28 |
| Emoji 18.0 (2026) | U+1FAFA | 1 | 1 | 2 | 4 |
لماذا قد يبلغ طول إيموجي واحد سبعة محارف
نقاط الترميز هي الأرقام التي يخصصها Unicode، وقد يُبنى الإيموجي من عدة نقاط منها. وعلم اسكتلندا أوضح مثال: علم أسود، وخمسة حروف وسوم غير مرئية تكتب gbsct، ثم وسم إلغاء، أي سبع نقاط ترميز في المجموع. تخزّن JavaScript النص بترميز UTF-16، حيث يشغل كل ما فوق U+FFFF وحدتين، فيكون .length للعلم نفسه 14. ويخصص UTF-8 أربعة بايتات لكل نقطة من تلك النقاط، فيشغل العلم 28 بايتًا في قاعدة البيانات. ولا يطابق ما يراه الإنسان إلا رقم واحد، وهو الرقم الذي لا تسأل عنه معظم الشيفرات. في JavaScript، احسب باستخدام Intl.Segmenter مع ضبط granularity على grapheme، وفي Python يؤدي النمط \X في وحدة regex الخارجية المهمة نفسها.
تخزين الإيموجي في MySQL دون علامات استفهام
إذا تحولت الإيموجي إلى ???? بعد الحفظ، فالعمود يستخدم على الأرجح مجموعة المحارف utf8 في MySQL، التي لا تخزّن رغم اسمها أكثر من ثلاثة بايتات للمحرف. وكل إيموجي فوق U+FFFF يحتاج إلى أربعة، فإما أن تفشل عملية الإدراج وإما أن تضيع البيانات. والحل هو utf8mb4: حوّل الجدول باستخدام ALTER TABLE ... CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci، وتأكد من أن الاتصال نفسه يستخدم utf8mb4 أيضًا، لأن جدولًا سليمًا خلف اتصال utf8 سيظل يشوّه النص. وقد جعل MySQL 8.0 الترميز utf8mb4 افتراضيًا، لذا تصيب المشكلة غالبًا قواعد البيانات القديمة التي رُقّيت بدلًا من إنشائها من جديد.
كيانات HTML وCSS والمسافة اللاحقة
في صفحة تُقدَّم بترميز UTF-8، وهي جميع الصفحات تقريبًا، يمكنك لصق الإيموجي مباشرة في HTML، ولا حاجة إلى كيانات مثل 👍 إلا حين يشوّه قالب أو نظام بريد إلكتروني المحارف الخام. أما CSS فأكثر تدقيقًا. ففي خاصية content، تمتد صيغة الهروب مثل \1F44D حتى أول محرف ليس ست عشريًا، فإذا كان المحرف التالي قابلًا للقراءة كرقم ست عشري وجب إنهاء صيغة الهروب بمسافة. وهذه المسافة تُبتلع ولا تُطبع. ويتضمنها صف CSS لدينا دائمًا بين نقاط الترميز، ولهذا يظهر الإبهام بلون البشرة على شكل \1F44D \1F3FD مع فراغ مقصود.
لماذا يحتسب X كل إيموجي محرفين
حدود عدد المحارف موضع آخر تتباين فيه طرق العد. فمكتبة العد مفتوحة المصدر في X تحتسب معظم الإيموجي محرفين ضمن حد الـ280، أيًّا كانت مكوناتها، فيكلّف 👍 و👩💻 القدر نفسه مع أن الأول نقطة ترميز واحدة والثاني ثلاث. والرسائل النصية القصيرة أقسى: فإيموجي واحد يجبر الرسالة كلها على ترميز UCS-2، مما يقلّص الرسالة الواحدة من 160 محرفًا إلى 70. وإذا رفض نموذج أو عمود في قاعدة بيانات أو منصة اجتماعية نصًا يبدو قصيرًا، فجدول الأطوال أعلاه يوضح السبب عادةً.
معجم الإيموجي: نقاط الترميز والوصلات والمحدداتالرموز المختصرة للإيموجي في Slack وDiscord وGitHubكل الإيموجي للنسخ
أسئلة عن نقاط ترميز الإيموجي
ما رمز Unicode لإيموجي الوجه المبتسم؟
الوجه المبتسم ابتسامة عريضة 😀 هو U+1F600. اكتبه في HTML هكذا 😀، وفي CSS هكذا \1F600، وفي JavaScript هكذا \u{1F600} أو بالصيغة الأقدم \uD83D\uDE00، وفي Python هكذا \U0001F600. والصق أي إيموجي آخر في المحوّل لتحصل على رموزه.
لماذا يكون لإيموجي واحد نقطتا ترميز؟
كثير من الإيموجي تسلسلات. فالإيموجي ❤️ هو رمز القلب U+2764 مع محدد النمط U+FE0F، و👍🏽 إبهام مرفوع مع لون بشرة، والأعلام حرفان. ويرسم جهازك التسلسل صورةً واحدة.
ما الفرق بين \u{1F600} و\uD83D\uDE00؟
هما الإيموجي نفسه. تسمّي \u{1F600} نقطة الترميز مباشرة وتعمل في JavaScript الحديثة. أما \uD83D\uDE00 فهي الزوج البديل في UTF-16، وهي الصيغة الوحيدة التي تقبلها JavaScript القديمة وJava وC# وJSON للمحارف التي تتجاوز U+FFFF.
كم بايتًا يشغل الإيموجي؟
في UTF-8، أربعة بايتات لكل نقطة ترميز فوق U+FFFF، فيشغل إيموجي بسيط مثل 😀 أربعة بايتات. أما التسلسلات فتتراكم: 👍🏽 يشغل 8 بايتات، و👩💻 يشغل 11، وعلم اسكتلندا 28.
هل يرسل هذا المحوّل نصي إلى أي مكان؟
لا. يجري التحويل بالكامل داخل متصفحك باستخدام JavaScript. ولا يُرفع أو يُخزَّن أي شيء تكتبه أو تلصقه.
