ForHosting KIT · أدوات المطورين

مُطبِّع Unicode NFKD

يصبح file ① café هو file 1 café مع فصل العلامة: تنفتح الربطات إلى حروف منفصلة، وتصبح الأرقام الدائرية أرقامًا عادية، وتنقسم الحروف المشكّلة إلى أساس وعلامة، دون أي إعادة تركيب بعد ذلك. مجاني في متصفحك.

  • مجاني
  • يعمل في متصفحك
  • دون تسجيل
  • بياناتك لا تغادر جهازك
استخدمها من الويبAPIالبريدTelegramالتطبيق قريبًا
إذا أدخلت
النص
file ① café
تحصل على
النتيجة
file 1 café
الصيغة
NFKD
طول المُدخَل
10
طول النتيجة
12

غالباً ما يحمل نص Unicode الأحرف المجردة ذاتها بأشكال مرمّزة متعددة: حرف مركّب واحد، حرف مسبَق التركيب مع تشكيل، رقم داخل دائرة، أو أساس مع علامات دمج. تحتاج محركات البحث وقواعد البيانات ومرشحات الأمن شكلاً مستقراً واحداً حتى يتطابق file و file، ويتساوى café و café بعد التفكيك، ولا يخفي ① رقماً. يطبّق شكل التطبيع Unicode KD (NFKD) تفكيك التوافق: يوسّع الحروف المركّبة، ويزيل فروقات العرض فقط، ويفصل تسلسلات الدمج دون إعادة تركيبها. تقبل هذه القدرة أي سلسلة، وتشغّل خوارزمية NFKD القياسية، وتعيد النتيجة المطبّعة مع إحصاءات الطول ونقاط الترميز بالإضافة إلى قيمة منطقية تبيّن ما إذا تغيّر شيء.

ماذا يفعل NFKD وكيف يختلف عن NFC وNFD وNFKC

شكل التطبيع Unicode KD، المعرَّف في الملحق الخامس عشر لمعيار Unicode، هو تفكيك التوافق. بخلاف NFD الذي يطبّق فقط التفكيكات القانونية مثل فصل é مسبَق التركيب إلى e مع حادّة دمج، يطبّق NFKD أيضاً تعيينات توافق تزيل تمييزات التنسيق والعرض غير الجوهرية دلالياً لكثير من مهام المطابقة. تصبح الحروف المركّبة مثل الحرف الواحد fi الحرفين f و i؛ وتصبح ff هي f f؛ وffi هي f f i.

تتوسع الأرقام داخل دائرة والأرقام بعرض كامل والمرتفعة وما شابهها من أحرف التوافق إلى نظائرها البسيطة. تظهر تسلسلات الدمج القانونية بترتيب مفكك، فقد يصبح café هو cafe متبوعاً بحادّة دمج على e. لا يعيد NFKD التركيب عمداً: تلك الخطوة تخص NFKC.

اختَر NFKD عندما تريد أقصى تبسيط للفهرسة أو المقارنة التقريبية أو إزالة أشكال العرض قبل معالجة لاحقة. اختَر NFC عندما تفضّل شكلاً مركّباً مضغوطاً للتخزين والعرض. يعيد هذا الطرف دائماً form بقيمة NFKD حتى لا يخمن العملاء أي خوارزمية شُغّلت.

تستخدم التنفيذ دالة String normalize المدمجة في لغة المضيف، وهي متوافقة مع UAX 15 وحتمية بالكامل على محركات JavaScript الحديثة.

أين يظهر تطبيع Unicode NFKD في العمل الفعلي

تطبّع أنظمة البحث والفهارس عناوين المنتجات والتسميات الظاهرة حتى لا تُنشئ الطباعة الغنية بالحروف المركّبة من أدوات التصميم مفاتيح مكررة: ينهار final و final بعد NFKD. يقارن مهندسو التوطين سلاسل المستخدم بعد تفكيك التوافق عند تعقّب المتشابهات المربكة أو التحقق من أن شكل العرض مجرد سكر عرض فوق حروف بسيطة. غالباً ما تطبّق خطوط الأمن والهوية NFKD أو NFKC قبل التجزئة أو المساواة حتى لا تتجاوز تهجئات Unicode البديلة للاسم المجرّد ذاته قوائم السماح.

توثّق مسارات الخطوط والصور الرمزية أي أحرف توافق ما زالت العائلة تقدّمها كرمز واحد، وتحتاج خطوة توسعة حتمية لتثبيتات الانحدار. تعلّم دورات البرمجة الترميز بإظهار أن حرفاً مرئياً واحداً قد يقابل عدة قياسات بعد التفكيك؛ وتخدم صفحة NFKD المخصصة نية البحث تلك أفضل من دفنها تحت Base64 أو محوّلات نقاط الترميز. تلصق مكاتب الدعم رموزاً غريبة من التذاكر وتحتاج شكلاً مبسّطاً موثوقاً لإعادة الإنتاج في الهندسة.

إذا احتجت قوائم U-plus لنقاط الترميز أو كيانات HTML أو إصلاح mojibake لـ UTF-8، فاعاملها كنوايا صفحات منفصلة ولا تُثقل صفحة مُطبِّع Unicode NFKD هذه.

طي مفاتيح البحث والفهارس

طبّع عناوين المنتجات والتسميات بـ NFKD حتى لا تنشئ الحروف المركّبة والأرقام داخل دائرة مفاتيح فهرس مكررة بجانب مكافئاتها بالنص العادي.

مقارنة الهوية والأمن

فكّك أسماء المستخدمين والرموز تفكيك توافق قبل المساواة أو التجزئة حتى لا تتجاوز متغيرات العرض المرشحات التي تتوقع أشكالاً ملائمة لـ ASCII.

ما هو Unicode NFKD؟

NFKD هو شكل التطبيع KD من الملحق #15 لمعيار Unicode: تفكيك توافق كامل. يبسط الحروف المركّبة وأحرف التوافق ويفصل علامات الدمج دون إعادة تركيبها.

كيف يختلف NFKD عن NFKC؟

كلاهما يطبّق تفكيك التوافق. ثم يعيد NFKC التركيب حيث أمكن إلى أحرف مركّبة. تعيد هذه الأداة NFKD فقط (شكل مفكك بلا إعادة تركيب).

هل يصبح file هو file؟

نعم. الحرف المركّب fi U+FB01 حرف توافق؛ يعيّنه NFKD إلى f + i، فيُطبَّع file إلى file مع changed بقيمة true.

ماذا يحدث عند إدخال غير صالح؟

يُرفض text المفقود والكائنات غير النصية والأرقام غير المنتهية والسلاسل المفرطة الطول برسالة واضحة. لا تُحاسب إخفاقات التحقق.

لماذا تصبح النتيجة أطول من النص الأصلي؟

لأن كل ربطة تتحول إلى عدة حروف وكل علامة تصبح رمزًا مستقلًا. ففي المثال file ① café تتحول 10 نقاط ترميز في المدخل إلى 12 في الناتج، مع أن النص يبدو على الشاشة شبه مطابق.

كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.

POSThttps://api.kit.forhosting.com/enc/unicode-nfkd

صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.

curl -X POST https://api.kit.forhosting.com/enc/unicode-nfkd \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"text":"file ① café"}'
{
  "text": "file ① café"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.unicode_nfkd",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.

لكل طلب$0.002

السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.

HTTPالرمزالمعنى
401unauthorizedمفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك.
402insufficient_balanceرصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة.
404unknown_typeنوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب.
429rate_limitedتجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة.

يفشل الإدخال غير الصالح أو المفقود بـ invalid_input حتى لا تخترع الحمولات الخاطئة نصاً. تشترك أداة المتصفح المجانية وواجهة API المدفوعة في الوحدة النقية ذاتها، فتظل عروض الصف وخطوط التوطين وخطافات الإنتاج متوافقة دائماً.

عقد الإدخال وحقول الاستجابة وسلوك الأخطاء

السلاسل الفارغة صالحة وتعيد نتيجة NFKD فارغة مع changed بقيمة false. تفشل السلاسل الأطول من خمسة وستين ألفاً وخمسمائة وستة وثلاثين وحدة ترميز UTF-16 حتى لا تستنزف اللصق الجامح العامل. يفشل غياب text فوراً دون فوترة. استخدم نموذج المتصفح المجاني لفحص التسميات وأسماء المنتجات الملصقة، ثم العقد ذاته من السكربتات عند الحاجة إلى تثبيتات جماعية أو تأكيدات CI. أرسل كائن JSON بحقل نصي مطلوب اسمه text. تُقبل الأسماء البديلة input و value و s و data عند غياب text، كما في أدوات الترميز الشقيقة. تُحوَّل الأرقام والمنطقيات إلى صورها العشرية أو true أو false؛ وتُرفض الكائنات والمصفوفات و null و NaN و Infinity بـ invalid_input مع تسمية المشكلة. عند النجاح يعيد الجسم text الأصلي، ويوفّر result كسلسلة مطبّعة بـ NFKD، ويضبط form على الثابت NFKD، ويضبط changed على true عندما يختلف result عن text، ويبلّغ input_length و result_length بعدد وحدات UTF-16، ويبلّغ input_code_points و result_code_points بعدد قياسات Unicode حتى لا تُحصى الرموز التعبيرية والأحرف خارج BMP خطأً، ويتضمن تسمية معيار قصيرة تشير إلى UAX 15. مثال: تصبح كلمة ligature file هي file مع changed true و result_length أكبر لأن وحدة واحدة صارت أربعاً. تسعير استدعاءات API الناجحة هو الأساس المنشور $0.002 لكل عنصر؛ ولا تستهلك إخفاقات التحقق الرصيد المدفوع مسبقاً.

أين يظهر تطبيع Unicode NFKD في العمل الفعلي

لأن هذه القدرة محرك parse نقي، فإن تسعير API هو الأساس المنشور $0.002 لكل عنصر ناجح، ولا يستهلك فشل التحقق الرصيد.

تثبيتات التوطين والتعليم

ولّد سلاسل مفككة مستقرة لاختبارات golden وفحص تغطية الصور الرمزية وعروض الصف لتعيينات توافق UAX #15.

كم التكلفة؟

أداة المتصفح مجانية وتعمل محلياً. تستخدم طلبات API رصيد KIT المدفوع مسبقاً بسعر $0.002 لكل عنصر ناجح؛ ولا يُحاسب الإدخال غير الصالح.

اطّلع على توثيق KIT الكامل ←