كيفية جعل المرن (الماسح الضوئي المعجمي) لقراءة إدخال أحرف UTF-8؟

StackOverflow https://stackoverflow.com/questions/921648

سؤال

يبدو أن ثني لا يدعم المدخلات UTF-8. كلما واجه الماسح الضوئي سحر غير ASCII، فإنه يتوقف المسح كما لو كان EOF.

هل هناك طريقة لإجبار المرن لتناول أمي UTF-8؟ لا أريدها أن تطابق فعلا من utf-8 chars، فقط أكلها عند استخدام "." نمط.

أي اقتراح؟

تعديل

سيكون الحل الأكثر بسيطة:

أي [ x00- xf

واستخدام "أي" بدلا من "." في قواعدي.

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

المحلول

لقد كنت أبحث في هذا نفسي وقراءة القائمة البريدية المرنة لمعرفة ما إذا كان أي شخص فكر في ذلك. للحصول على المرن لقراءة Unicode هي علاقة معقدة ...

يمكن أن يؤدي ترميز UTF-8، ومعظم الترميزات الأخرى (16s) ستؤدي إلى طاولات ضخمة قيادة Automata.

طريقة شائعة حتى الآن هي:

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

UB [\200-\277] %% 
[\300-\337]{UB}                   { do something } 
[\340-\357]{UB}{2}                { do something } 
[\360-\367]{UB}{3}                { do something } 
[\370-\373]{UB}{4}                { do something } 
[\374-\375]{UB}{5}                { do something }

مأخوذة من القائمة البريدية.

قد أنظر إلى إنشاء تصحيح مناسب لدعم UTF-8 بعد النظر إليه أبعد من ذلك. الحل المذكور أعلاه يبدو غير قابل للحياة لملفات .L الكبيرة. وهو حقا قبيح! يمكنك استخدام النطاقات المشابهة لإنشاء "." قاعدة بديلة لتتناسب مع جميع أحرف ASCII و UTF-8، ولكن لا تزال قبيحة إلى حد ما.

أتمنى أن يساعدك هذا!

نصائح أخرى

قد يساعد كتابة طابعات Negatet أيضا:

n t] إرجاع whitespace؛ [^ n t] retrun non_whitespace

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top