مقتبس حقل CSV
الخلية He said "Hi", friend تصبح "He said ""Hi"", friend": تُحاط بعلامتي اقتباس مزدوجتين وتُضاعف كل علامة اقتباس داخلية كما تشترط RFC 4180، فلا تُزيح الفواصل والاقتباسات أعمدتك. وتعيد الأداة الخلية المقتبسة إلى نصها أيضًا. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- He said "Hi", friend
- وضع الحساب
- Quote
- النتيجة
- "He said ""Hi"", friend"
- الطول
- 24
يبدو CSV بسيطًا حتى يحتوي اسم منتج على فاصلة، أو تحمل ملاحظة علامات اقتباس مزدوجة، أو تمتد خلية على سطرين. حقل واحد باقتباس خاطئ يكسر المحللات وجداول البيانات وأنابيب البيانات بطرق يصعب اكتشافها لاحقًا. استخدمه عندما تحتاج مرجعًا موثوقًا لخلية واحدة — لا محلل CSV كامل — قبل تجميع الصفوف أو تقسيمها في موضع آخر.
كيف يقتبس RFC 4180 حقل CSV واحدًا
يعرّف RFC 4180 تنسيق CSV كسجلات من حقول مفصولة بفواصل، مع إحاطة اختيارية بعلامات اقتباس مزدوجة للحقول التي تكون غامضة بغير ذلك. يجب إحاطة الحقل الذي يحتوي فاصلة أو علامة اقتباس مزدوجة أو رجوع حمل أو تغذية سطر بعلامات اقتباس مزدوجة. داخل حقل مقتبس تُكتب علامة الاقتباس المزدوجة الحرفية كعلامتي اقتباس مزدوجتين متتاليتين — لا كهروب بشرطة مائلة عكسية.
يجوز ترك الحقول الخالية من تلك الأحرف الخاصة عارية، وإن جاز للمنتجين اقتباس كل حقل للاتساق. تنفّذ هذه القدرة ذلك العقد لرمز حقل واحد بالضبط. في وضع quote تمسح القيمة الخام بحثًا عن فاصلة واقتباس وCR وLF؛ إن ظهر أي منها أو كان force بقيمة true تبني رمزًا مقتبسًا بلف النص واستبدال كل اقتباس مضمّن بزوج مضاعف.
إن لم يظهر شيء وكان force بقيمة false تُعاد القيمة الخام دون تغيير لتبقى المعرّفات البسيطة مضغوطة. في وضع unquote تعني علامة الاقتباس المزدوجة البادئة أن الرمز كله مقتبس: يجب أن يكون الحرف الأخير أيضًا علامة اقتباس مزدوجة، ويجب أن يظهر كل اقتباس داخلي كزوج، ويُعاد الجسم المستعاد بلا الإحاطة الخارجية. يُعاد الرمز العاري بلا اقتباس بادئ كما هو، لكن الرمز العاري الذي ما زال يحتوي حرف اقتباس يُرفض لأن ذلك الشكل ليس حقلًا غير مقتبس قانونيًا وفق RFC 4180.
ما ترسلونه وما تستلمونه
أرسلوا حقل سلسلة مطلوبًا باسم text وحقلين اختياريين mode وforce. يحوّل وضع quote نص الخلية الخام إلى رمز حقل RFC 4180 في result. يعكس وضع unquote الاقتباس في text ويعيد القيمة الصريحة المستعادة في result.
الافتراضي لـ force هو false فيحيط وضع quote فقط عندما يحتوي الحقل فاصلة أو اقتباسًا أو CR أو LF؛ عيّنوا force إلى true عندما يقتبس منتجكم كل خلية دائمًا لتخطيط موحّد. فشل التحقق لا يستهلك الرصيد المدفوع مسبقًا. تشمل الفحوصات الكلاسيكية اقتباس تحية تضم اقتباسات وفاصلة، وإلغاء اقتباس الرمز الناتج إلى الأحرف الأصلية، وفرض الاقتباس على كلمة بسيطة كانت ستبقى عارية، ورفض سلسلة مقتبسة لا تُغلق أبدًا.
أين يبرّر مقتبس حقل CSV واحد مكانه
مولّدات الشيفرة ومهام ETL التي تبني صفوف CSV خليةً خلية يجب أن تقتبس كل حقل نص حر قبل الوصل بالفواصل، وإلا فإن عنوان منتج واحد بفاصلة يزيح كل الأعمدة التالية. مساعدات استيراد الجداول وأدوات الدعم تلصق خلية فوضوية واحدة في كل مرة وتحتاج مسارًا عكسيًا يفشل بصوت عالٍ على التذاكر نصف المقتبسة بدل القصّ بصمت.
يريد مؤلفو المناهج الذين يعلّمون نظافة البيانات صفحة مخصصة لاقتباس مستوى الحقل بدل دفن القاعدة تحت منظف CSV متعدد الصفوف، لأن نية البحث تختلف: من يبحث عن اقتباس أو إلغاء اقتباس حقل CSV يريد قواعد الهروب لا إعادة تسمية الأعمدة ولا إزالة التكرار. أنابيب التوطين والمحتوى التي تحقن عبارات من المستخدم في قوالب التصدير يمكنها استدعاء نقطة parse هذه من عمال الحافة دون إقامة محرك جداول. فشل التحقق لا يستهلك الرصيد.
اجعلوا كل طلب حقلًا واحدًا وثبّتوا سلاسل النتيجة في الاختبارات فتحصلون على اقتباس قابل للتكرار للمولّدات وإضافات LMS وعمال الحافة دون سحب إطار CSV كامل من أجل خلية واحدة.
حالات الاستخدام
خلايا آمنة في صفوف CSV مولَّدة
اقتبسوا كل اسم منتج أو ملاحظة أو عنوان نص حر قبل وصل الأعمدة حتى لا تزيح الفواصل والاقتباسات تخطيط الصف أبدًا.
اختبارات ذهبية لمكتبات CSV
ولّدوا وتحققوا من متجهات quote وunquote التي تطابق قواعد المضاعفة في RFC 4180 عبر اللغات ومصدّري جداول البيانات.
الأسئلة الشائعة
كيف أقتبس حقل CSV فيه اقتباسات مضمّنة؟
أرسلوا الحقل الخام في text مع mode quote (الافتراضي). أي فاصلة أو اقتباس مزدوج أو CR أو LF يفعّل الإحاطة؛ والاقتباسات الداخلية تصبح "". مثال: He said "Hi" يصبح "He said ""Hi""".
كيف أزيل الاقتباس عن حقل CSV؟
أرسلوا رمز الحقل المرمّز مع mode unquote. يجب أن تبدأ الرموز المقتبسة وتنتهي بعلامات اقتباس مزدوجة؛ والاقتباسات المضاعفة داخليًا تصبح اقتباسًا واحدًا في النتيجة.
متى يكون force مفيدًا؟
عيّنوا force إلى true في وضع quote لإحاطة كل الحقول حتى الكلمات البسيطة بلا أحرف خاصة. يفضّل بعض المنتجين اقتباسًا موحّدًا لكل خلية؛ اتركوا force بقيمة false للاقتباس فقط عندما يفرض RFC 4180 ذلك.
هل يحلّل ملف CSV كاملًا؟
لا. هذه القدرة تقتبس أو تزيل الاقتباس عن رمز حقل واحد بالضبط.
متى تحتاج خلية CSV إلى علامات اقتباس؟
فقط عندما تحتوي فاصلة أو علامة اقتباس مزدوجة أو رجوعًا إلى أول السطر أو سطرًا جديدًا. وإلا تعود القيمة دون تغيير وتبقى المعرّفات البسيطة قصيرة، ما لم تختر وضع الاقتباس حول كل الخلايا.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/csv-quote \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"He said \"Hi\", friend"}'const res = await fetch("https://api.kit.forhosting.com/enc/csv-quote", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "He said \"Hi\", friend"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/csv-quote",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "He said \"Hi\", friend"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/csv-quote", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"He said \\"Hi\\", friend"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"He said \"Hi\", friend"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/csv-quote", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "He said \"Hi\", friend"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.csv_quote",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
يطبّق مقتبس حقول CSV هذا قواعد RFC 4180 على حقل واحد في كل مرة: وضع quote يلف القيمة بعلامات اقتباس مزدوجة ويضاعف كل اقتباس مضمّن عندما يحتاج الحقل ذلك (أو دائمًا عند فرض الاقتباس)؛ ووضع unquote يعكس ذلك الترميز ويفشل فورًا بـ invalid_input عند الرموز غير المغلقة أو نصف المهربة بدل اختراع بيانات تالفة.
كيف يقتبس RFC 4180 حقل CSV واحدًا
المسار عمل نصي نقي بلا شبكة وبلا بذور عشوائية وبلا ساعة حائط، فتنتج المدخلات المتطابقة دائمًا JSON نفسه. تسعير استدعاءات API الناجحة هو القاعدة المنشورة $0.002 لكل عنصر، وفشل التحقق لا يستهلك الرصيد المدفوع مسبقًا.
ما ترسلونه وما تستلمونه
عند إغفال mode يكون الافتراضي quote فيظل الحمولة الواحدة مفيدة. يعيد الرد mode وforce وtext الأصلي وresult وquoted (ما إذا كان الناتج أو رمز الإدخال مقتبسًا) وneeds_quotes (ما إذا كانت القيمة الخام تتطلب الاقتباس وفق RFC 4180) وlength لـ result. غياب text والكائنات غير السلسلة وقيم mode غير المدعومة والقيم غير القابلة للقراءة كمنطقي لـ force والسلاسل الأطول من الحد الموثق والحقول المقتبسة غير المغلقة وعلامات الاقتباس المفردة غير المهربة داخل جسم مقتبس والحقول العارية التي تحتوي اقتباسًا بصورة غير قانونية تفشل كلها بـ invalid_input ورسالة إنجليزية واضحة. تسعير API عند النجاح هو القاعدة المنشورة $0.002 لكل عنصر.
أين يبرّر مقتبس حقل CSV واحد مكانه
ولأن التنفيذ parse نقي من المستوى A، يكلف كل استدعاء ناجح السعر الأساسي المنشور $0.002 بلا رموز نموذج وبلا شبكة صادرة. إن احتجتم تنظيف ملف كامل أو دمجه أو تحويله إلى JSON، عاملوا ذلك كنوايا وصفحات هبوط بحث منفصلة بدل تحميل صفحة مقتبس الحقل هذه بما يزيد عن دورها.
حالات التكامل
فك ترميز خلية مقتبسة واحدة
أزلوا الاقتباس عن رمز حقل RFC 4180 واحد من سجل أو تذكرة أو fixture إلى نص مقروء، مع فشل حاسم عند الاقتباسات غير المغلقة أو نصف المهربة.
أسئلة تقنية
كم تكلفة مقتبس حقول CSV؟
أداة المتصفح مجانية. طلبات API تستخدم رصيد KIT المدفوع مسبقًا بمقدار $0.002 لكل استدعاء ناجح؛ والإدخال غير الصالح لا يُفوتر.