مُطبِّع Unicode NFKC
يصبح file ㎞ ① هو file km 1: تُطوى الربطات والحروف كاملة العرض والأرقام الدائرية وسائر الصيغ المزخرفة إلى نص بسيط، ثم يُعاد تركيب العلامات، فتتطابق نسخ الاسم الواحد في البحث وفحص التكرار. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- file ㎞ ①
- النتيجة
- file km 1
- الصيغة
- NFKC
- طول المُدخَل
- 7
- طول المُخرَج
- 9
يتلقّى مُطبِّع Unicode NFKC أي سلسلة Unicode ويعيد نتيجة Normalization Form KC: تفكيك توافق يليه تركيب قانوني وفق الملحق 15 من معيار Unicode. يطوي هذا المسار أشكال العرض التي تبدو مختلفة في التخزين لكن يجب أن تتطابق في البحث والفهرسة وفحوصات الهوية: تتحول ربطة fi إلى f وi بسيطتين، والحروف اللاتينية كاملة العرض إلى ASCII من A إلى Z، والأرقام داخل دوائر إلى أرقام عادية، والحروف القوطية والرياضية المزيَّنة تنكمش نحو الحرف الأساس، وتُركَّب متتاليات مثل e مع حادّة جامعة في محرف مركَّب مسبقاً إن وُجد. يستخدم المطوّرون NFKC عند بناء مفاتيح إزالة التكرار وأنابيب slug لعناوين URL وبحث الكتالوج حتى لا تظهر متغيرات التوافق المتكافئة بصرياً كسجلات منفصلة. المسار parse خالص: الدخل نفسه ينتج الخرج نفسه دائماً، بلا استدعاءات شبكة ولا رموز نموذج ولا سلوك يعتمد على التاريخ. استخدم المسار المجاني في المتصفح لفحص الطي قبل دمج الخوارزمية نفسها في الأتمتة.
ما يفعله NFKC وكيف يختلف عن NFC
يعرّف Unicode أربع صيغ تطبيع. يعمل NFC وNFD على التكافؤ القانوني فقط: يعيدان التركيب أو يفكّكان محارف يعتبرها المعيار نفس المحرف المجرّد، مثل é المركَّب مسبقاً مقابل e مع حادّة جامعة. يذهب NFKC وNFKD أبعد بتطبيق تعيينات التوافق أولاً.
تتجاهل تعيينات التوافق عمداً فروق العرض المفيدة للطباعة لا للمطابقة: ربطة fi ذات نقطة رمز واحدة تصبح f وi؛ والأرقام والحروف اللاتينية كاملة العرض تُعيَّن إلى مقابلات ASCII نصف العرض؛ وتُطوى أرقام الأسس والمؤشرات إلى أرقام عادية؛ وتتوسّع أحرف الكسور إلى متتاليات مع شَرطة كسر؛ وتُختزل كثير من أشكال الحروف المحاطة أو المزيَّنة نحو أساس أبسط. بعد تفكيك التوافق ينفّذ NFKC خطوة التركيب نفسها التي لـ NFC، فتكون السلسلة النهائية مطوية بالتوافق ومركَّبة قانونياً. اختر NFC عندما يجب الحفاظ على الربطات وأسلوب العرض الكامل كرموز عرض منفصلة للأمانة البصرية.
واختر NFKC عندما يجب أن تعامل المساواة والبحث والتجزئة تلك المتغيرات كنص واحد. تطبّق هذه القدرة NFKC دائماً وتوسُم الصيغة في الاستجابة حتى لا يخمن العميل الخوارزمية.
أين يضيف مُطبِّع NFKC قيمة في أنابيب حقيقية
تطبّع أنظمة البحث والكتالوج عناوين المنتجات والأسماء التي يدخلها المستخدم بـ NFKC قبل الفهرسة حتى تقع علامة كاملة العرض وتوأمها ASCII على الرمز نفسه. تطبّق أنابيب المحتوى التي تولّد slug لعناوين URL أولاً NFKC حتى لا تُنتج الربطات ورموز التوافق لاحقاً مفاجآت غامضة بترميز النسبة المئوية. تقارن مهام جودة البيانات السجلات بعد NFKC لاكتشاف شبه المكررات التي لا تختلف إلا بمتغيرات Unicode مزيَّنة منسوخة من PDF أو مستندات مكتبية.
تطبّع فحوصات الأمن والهوية أحياناً أسماء المستخدمين أو التسميات بـ NFKC قبل اختبار المساواة، فتقلّل أشكال توافق شبيهة ليست هجمات متجانسات حقيقية لكنها تكسر بوابات التطابق التام. يستخدم مهندسو الأقلمة الأداة المجانية في المتصفح على هذه الصفحة لتأكيد كيف تُطوى عبارة نموذجية قبل تثبيت الصيغة نفسها في اختبارات القبول. يثبّت مهندسو الجودة مداخل ذهبية مثل ربطة fi وABC كاملة العرض والمتتاليات الجامعة ومربعات التوافق كرمز الكيلومتر، مؤكدين سلسلة result وعلامة changed معاً.
حالات الاستخدام
إزالة التكرار في البحث والكتالوج
طبّع العناوين والأسماء بـ NFKC قبل الفهرسة حتى تتشارك الربطات والحروف كاملة العرض وأرقام التوافق مفاتيح البحث نفسها.
أنابيب slug وعناوين URL
اطوِ أحرف التوافق قبل توليد الـ slug حتى لا يُنتج Unicode المزيَّن من النسخ واللصق مقاطع مسار غير متوقعة.
اختبارات ذهبية لهوية النص
ثبّت مخرجات NFKC للربطات والعلامات الجامعة ومربعات التوافق في CI حتى لا تغيّر المكتبات سلوك الطي بصمت.
الأسئلة الشائعة
ما هو تطبيع Unicode NFKC؟
NFKC هو Normalization Form Compatibility Composition من UAX #15: تفكيك توافق لأشكال العرض ثم تركيب قانوني. يطوي الربطات والأحرف المزيَّنة إلى سلسلة مركَّبة مستقرة للمطابقة والبحث.
كيف يختلف NFKC عن NFC؟
يتعامل NFC مع التكافؤ القانوني فقط (مثل تركيب e مع الحادّة إلى é). يطبّق NFKC أيضاً تعيينات توافق مثل fi→fi والعرض الكامل A→A قبل التركيب، وهذا أفضل للمساواة والفهرسة.
كيف يختلف NFKC عن NFKD؟
كلاهما يطبق أولًا طي التوافق نفسه. يتوقف NFKD عند ذلك ويترك العلامات منفصلة، أما NFKC فيعيد تركيبها، فيصبح الحرف e مع العلامة الحادة المركّبة حرفًا واحدًا هو é.
متى يُفضَّل عدم استخدام NFKC؟
عندما يجب أن تبقى الربطات أو الصيغ كاملة العرض أو الحروف المزخرفة ظاهرة كما هي، كما في نص منسق للعرض. يحذف NFKC هذه الفروق عن قصد، فاستخدم NFC للعرض وNFKC للمقارنة والبحث واكتشاف التكرار.
ماذا يحدث للحروف كاملة العرض والأرقام المرتفعة؟
تعود إلى صورتها العادية: تصبح الحروف اللاتينية كاملة العرض من A إلى Z العادية، والأرقام المرتفعة أو المنخفضة أرقامًا عادية، والكسور أرقامًا مع شرطة الكسر. وبذلك يطابق النص المنسوخ من ملف PDF ما يكتبه الناس.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/unicode-nfkc \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"file ㎞ ①"}'const res = await fetch("https://api.kit.forhosting.com/enc/unicode-nfkc", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "file ㎞ ①"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/unicode-nfkc",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "file ㎞ ①"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/unicode-nfkc", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"file ㎞ ①"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"file ㎞ ①"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/unicode-nfkc", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "file ㎞ ①"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.unicode_nfkc",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
فشل التحقق يعيد invalid_input ولا يُحتسب؛ والاستدعاءات الناجحة تكلّف السعر الأساسي المنشور $0.002.
ما يفعله NFKC وكيف يختلف عن NFC
الحقل result هو السلسلة المطبَّعة؛ وtext يعيد الدخل؛ وinput_length وoutput_length يبلغان أطوال JavaScript قبل التطبيع وبعده؛ وchanged يكون true عندما يختلف الخرج عن الدخل محرفاً بمحرف؛ وstandard يسمّي UAX 15 ليبقى التوثيق والتدقيق متوافقين مع مواصفة Unicode لا مع جدول طيّ مرتجل.
عقد الدخل وشكل الاستجابة وسلوك الأخطاء
غياب text يفشل برسالة واضحة لحقل مفقود. السلاسل الفارغة صالحة وتُطبَّع إلى فارغ مع changed بقيمة false. ولأن التنفيذ يستخدم مسار normalize في ECMAScript للمضيف لصيغة NFKC، تتشارك الملفات الذهبية والإنتاج نفس التعيين الحتمي لكل قياسي يدعمه المحرك. اقرن هذا المسار بمحوّل نقاط رمز عندما تحتاج إلى فحص رموز U-plus قبل الطي وبعده، أو بأدوات case-folding عندما يتطلب البحث NFKC وعدم الحساسية لحالة الأحرف معاً. أرسل عبر POST كائناً JSON يتضمن الحقل الإلزامي text وفيه سلسلة Unicode المراد تطبيعها. تُقبل الأسماء البديلة input وvalue وs وdata حتى تعيد النماذج ومساعدات الاستعلام وعملاء SDK استخدام أسماء مألوفة دون إعادة تسمية الأعمدة. يجب أن تكون القيمة سلسلة؛ وتُحوَّل الأعداد المنتهية والقيم المنطقية إلى شكل عشري أو true/false لسهولة الأوامر النصية، بينما تفشل الكائنات والمصفوفات وجسم null بلا حقل وNaN وInfinity بـ invalid_input ورسالة تسمّي المشكلة. تُرفض السلاسل الأطول من 65536 محرفاً لإبقاء ذاكرة Worker قابلة للتنبؤ. عند النجاح يتضمن الجسم دائماً result وtext المعاد وform المثبت على السلسلة NFKC وinput_length وoutput_length وchanged المنطقي وتسمية standard تشير إلى التركيب التوافقي Unicode NFKC. الطلبات غير الصالحة لا تُحتسب؛ ولا تستهلك السعر لكل عنصر $0.002 إلا التطبيعات الناجحة.
أين يضيف مُطبِّع NFKC قيمة في أنابيب حقيقية
ولأن القدرة parse خالصة من المستوى A، يكلّف كل استدعاء ناجح $0.002، ولا يخرج إلى الشبكة، ويطابق المسار التفاعلي المجاني بايتاً ببايت على الوحدة نفسها. يتيح هذا التقسيم — استكشاف مجاني في المتصفح وواجهة API بسعر مطابق — الانتقال من لصق عابر إلى تثبيتات CI دون إعادة كتابة الخوارزمية. أبقِ الحمولات دون حد الطول، وعامل invalid_input كخطأ عميل يجب إصلاحه لا كخطأ خادم قابل لإعادة المحاولة، ووثّق أنك اخترت NFKC عمداً عندما كان NFC الحافظ للعرض افتراضاً خاطئاً للمطابقة.
أسئلة تقنية
ما الدخل الذي يقبله مُطبِّع Unicode NFKC؟
أرسل كائن JSON بالحقل النصي الإلزامي text (بدائل input وvalue وs وdata). غياب text أو كائنات/مصفوفات غير نصية أو أعداد غير منتهية أو سلاسل أطول من 65536 محرفاً تعيد invalid_input.
ماذا تتضمن الاستجابة؟
result سلسلة NFKC؛ text يعيد الدخل؛ form دائماً NFKC؛ input_length وoutput_length أطوال محارف؛ changed يكون true إذا غيّر التطبيع السلسلة؛ standard يسمّي UAX #15.
كم تكلفة مُطبِّع Unicode NFKC؟
أداة المتصفح مجانية. طلبات API تستخدم رصيد KIT المدفوع مسبقاً بسعر $0.002 لكل استدعاء ناجح؛ والدخل غير الصالح لا يُحتسب.