سؤال

أنا جريش لإنشاء وحدة التحقق من صحة النموذج، بالإضافة إلى الاختبارات "العادية" يتحقق من الترميز أيضا.

وفقا لهذا المقال http://www.w3.org/international/questions/qa-forms-utf-8. الأحرف المسموح بها هي CR، LF و TAB في نطاق 0-31، del = 127 غير مسموح بها.

من ناحية أخرى، هناك شخصيات تحكم في النطاق 0x80xa0. في مصادر مختلفة رأيت أنه يسمح لهم بذلك وليس كذلك. كما أنني قد رأيت أن هذا يختلف عن XHTML، HTML و XML.

أخبرت بعض المقالات أن FF مسموح أيضا؟

هل يمكن لشخص ما تقديم إجابة جيدة مع مصادر ما يمكن إعطاؤه وما ليس كذلك؟

تحرير: حتى هناك http://www.w3.org/international/questions/qa-controls. بعض الغموض

تم دعم مجموعة C1

لكن الجدول يدل على أنهم غير قانونيين ومظهرون سابقا للتحقق من صحة UTF-8 يسمح لهم؟

هل كانت مفيدة؟

المحلول

أحرف Unicode في هذه النطاقات صالحة في HTML 4.01:

0x09..0x0A 0x0d 0x20..0x7e 0x00a0..0xd7ff 0xe000..0x10ffff

في XHTML 1.0 ... من غير الواضح. يرى http://cmsmcq.com/2007/c1.xml#127626258.

نصائح أخرى

أعتقد أنك تبحث في هذه الطريقة الخطأ. الموارد التي ترتبط بها تحدد القيم المشفرة صالحة في (س) أتش تي أم أل, ، ولكن يبدو أنك تريد التحقق من صحة "الاستجابة" من نموذج ويب - كما هو الحال في، وقيم عناصر تحكم النموذج المختلفة، كما تعود إلى الخادم الخاص بك. في هذه الحالة، يجب أن لا تنظر إلى ما هو صالح في HTML (X)، ولكن ما هو صالح في تطبيق / X-WWW- نموذج URLENCODED, ، وربما أيضا متعددة الاستخدامات / البيانات, أنواع mime. ال HTML 4.01 معايير <FORM> عناصر تنص بوضوح على أنه بالنسبة للتطبيق / X-WWW- شكل Urlencoded، "يتم استبدال الأحرف غير الأبجدية الرقمية ب"٪ HH ":

هذا هو نوع المحتوى الافتراضي. يجب ترميز النماذج المقدمة باستخدام نوع المحتوى هذا كما يلي:

  1. يتم هرب أسماء التحكم والقيم. يتم استبدال الأحرف الفضائية ب "+"، ثم يتم اختبار الأحرف المحجوزة كما هو موضح في RFC1738, القسم 2.2: يتم استبدال الأحرف غير الأبجدية الرقمية ب "٪ HH"، علامة النسبة المئوية وأرقام ست عشرية تمثل رمز ASCII للشخصية. يتم تمثيل استراحة السطر كأزواج "CR LF" (أي٪ 0D٪ 0A ').
  2. يتم سرد أسماء التحكم / القيم في الترتيب الذي تظهر به في المستند. يتم فصل الاسم عن القيمة بواسطة "=" ويتم فصل أزواج الاسم / القيمة عن بعضها البعض من خلال "&".

بالنسبة لما يتم احتواء ترميز الأحرف، (أي ما إذا كان %A0 هو مساحة غير كسرية أو خطأ)، وهذا قابل للتفاوض من قبل accept-charset سمة على your. <FORM> العنصر والاستجابة (حسنا، حقا GET أو POST طلب) Content-Type رأس.

قانون بوكب: كن محافظا فيما تفعله؛ أن تكون ليبرالية في ما تقبله من الآخرين.

إذا كنت تقوم بتوليد مستندات للآخرين للقراءة، يجب عليك تجنب / الهروب من جميع أحرف التحكم، حتى لو كانوا قانونيين من الناحية الفنية. وإذا كنت تحليل المستندات، يجب أن تسعى إلى قبول جميع أحرف التحكم حتى لو كانت غير قانونية من الناحية الفنية.

بادئ ذي بدء، أي octet صالح. ال التعبير العادي المذكور للحصول على تسلسل UTF-8 يغفل فقط بعضهم كما هم غير شائعين في الممارسة العملية التي يجب إدخالها من قبل مستخدم. ولكن هذا لا يعني أنهم غير صالحين. ليس من المتوقع أن تحدث فقط.

لا يحتوي الرابط الأول الذي ذكرته أي علاقة بالتحقق من صحة الأحرف المسموح بها في XHTML ... المثال على هذا الرابط يبدي ببساطة نمط شائع / عام للكشف عن ما إذا كانت البيانات الخام هي في ترميز UTF-8 أم لا.

هذا هو اقتباس من الرابط الثاني:

لا تدعم HTML، XHTML و XML 1.0 نطاق C0، باستثناء HT (Tabulation الأفقي) U + 0009، LF (Feed Line) U + 000A، و CR (عودة النقل) U + 000D. يتم دعم نطاق C1، أي أنه يمكنك تشفير عناصر التحكم مباشرة أو تمثيلها كملقمات NCRS (مراجع الأحرف الرقمية).

الطريقة التي قرأتها هذا هي:

يتم دعم أي حرف تحكم في نطاق C1 إذا قمت بتشفيرها (باستخدام PASE64 أو تمثيلات عرافة) أو تمثيلها كملقم NCRS.

فقط U + 0009، U + 000A، و U + 000D مدعومة في نطاق C0. لا يمكن تمثيل رمز التحكم آخر في هذا النطاق.

إذا كان من المعروف أن المستند هو xhtml، فعليك تحميلها والتحقق من صحةها ضد المخطط.

ما هي لغة البرمجة التي تستخدمها؟ على الأقل بالنسبة إلى Java توجد مكتبات للتحقق من ترميز سلسلة (أو صفيف بايت). أعتقد أن المكتبات المماثلة موجودة لغات أخرى أيضا.

هل أفهم سؤالك بشكل صحيح: هل ترغب في التحقق مما إذا كانت البيانات المقدمة من النموذج صالحة، ومفزز بشكل صحيح؟

إذا كان الأمر كذلك، لماذا تفعل العديد من الأشياء في وقت واحد؟ سيكون الأمر أسهل بكثير لفصل هذه الشيكات، وأداءها خطوة بخطوة، IMHO.

  1. تريد التحقق من أن بيانات النموذج المقدمة يتم ترميزها بشكل صحيح (في UTF-8، أجمع). كما يقول Archchancanlor Ridcully، هذا من السهل التحقق في معظم اللغات.
  2. ثم، إذا كان الترميز صحيحا، فيمكنك التحقق مما إذا كانت بيانات النموذج الصحيحة.
  3. ثم، إذا كانت بيانات النموذج صالحة، فيمكنك التحقق مما إذا كانت البيانات تحتوي على ما تتوقعه.
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top