سؤال

لذلك، أنا أعمل على مشروع مشروع Plain-C (ANSI 9899: 1999)، وأحاول معرفة مكان البدء في إعادة: Unicode، UTF-8، وكل ذلك موسيقى الجاز.

على وجه التحديد، إنه مشروع مترجم اللغة، ولدي مكانان أساسيان حيث سأحتاج إلى التعامل مع Unicode: القراءة في الملفات المصدر (اللغة تؤيد ظاهريا معرفات Unicode ومثلها)، وفي كائنات "سلسلة".

أنا على دراية بجميع الأساسيات الواضحة حول Unicode، UTF-7 / 8/16 / 32 & UCS-2/4، إذن، وهكذا، فأنا أبحث في الغالب عن مفيدة، C. الخاصة (أي، من فضلك لا يوجد C ++ أو C #، وهو كل ما تم توثيقه هنا على الفور) بالموارد فيما يتعلق ب "الخطوات التالية" لتنفيذ الأشياء الودية Unicode ... في C.

أي روابط، manpages، مقالات ويكيبيديا، رمز المثال، هو موضع ترحيب كبير. سأحاول أيضا الحفاظ على قائمة بهذه الموارد هنا في السؤال الأصلي، لأي شخص يحدث في وقت لاحق.


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

المحلول

المكونات الدولية ل Unicode يوفر مكتبة ج محمولة للتعامل مع يونيكود. إليك أرض المصعد الخاصة بهم ل ICU4C:

لا توفر لغات C و C ++ والعديد من بيئات نظام التشغيل دعم كامل لخدمات معالجة النص Unicode والمعايير المتوافقة مع المعايير. على الرغم من أن بعض المنصات تقوم بتوفير خدمات معالجة نص Unicode جيدة، لا يمكن أن يستخدم رمز التطبيق المحمول منهم. تحتوي مكتبات ICU4C على هذه الفجوة. توفر ICU4C أساسا مفتوحا ومرنا محمولا للتطبيقات لاستخدامها لمتطلبات العولمة البرمجية. تعقب ICU4C عن كثب معايير الصناعة، بما في ذلك Unicode و CLDR (مستودع بيانات اللغة المشتركة).

نصائح أخرى

غليظ لديه بعض وظائف Unicode. وهي مكتبة خفيفة الوزن جميلة. إنه ليس بالقرب من نفس المستوى من الوظائف التي توفرها وحدة العناية المركزة، ولكن قد تكون جيدة بما يكفي لبعض التطبيقات. الميزات الأخرى ل Glib جيدة للحصول على برامج C المحمولة أيضا.

بنيت GTK + على رأس Glib. يوفر Glib لغة الخوارزميات الأساسية تشهد تكرارا في التطبيقات. تحتوي هذه المكتبة على ميزات مثل (هذه القائمة ليست قائمة شاملة):

  • نظام ونوع النظام
  • حلقة الرئيسية
  • تحميل ديناميكي لوحات (أي المكونات الإضافية)
  • دعم الخيط
  • دعم الموقت
  • مخصص الذاكرة
  • قوائم انتظار الخيوط (متزامن وغير متزامن)
  • قوائم (مرتبطة منفردة، مرتبطة مضاعفة، مزدوجة انتهت)
  • الجداول التجزئة
  • صفائف
  • الأشجار (N-ARY و Binary متوازنة)
  • السلسلة المرافق والمناولة Charset
  • الماسح الضوئي المعجمي ومحلل XML
  • Base64 (ترميز و فكري)

أعتقد أن أحد الأسئلة المثيرة للاهتمام هو - ماذا يجب أن يكون تنسيقك الداخلي الشرعي الخاص بك؟ الخيارات 2 الواضحة (بالنسبة لي على الأقل) هي

أ) UTF8 في الفانيليا C-Strings B) UTF16 في صفائف قصيرة غير موقعة

في المشاريع السابقة، اخترت دائما UTF-8. لماذا ؛ لأن طريقه على الأقل مقاومة في العالم. كل ما تتداخل فيه مع (Stdio، String.h، إلخ) سيعمل بشكل جيد.

يأتي التالي - ما تنسيق الملف. المشكلة هنا هي أنها مرئية لمستخدميك (ما لم تقدم المحرر الوحيد لغتك). أعتقد هنا عليك أن تأخذ ما يعطونك ومحاولة تخمينه بواسطة Heading Peeking (مساعدة علامات ترتيب البايت)

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