سؤال

سؤالي في سياق الكود :: الكتل ونسخته المعدلة من Mingw ، و Notepad ++.

أريد أن أكون قادرًا على تضمين حرفي يونيكود في مصدري ، وأستطيع ، طالما أستخدم UTF-8 وعدم استخدام BOM.

هذا يعمل بشكل جيد ، إلى حد ما ، لكنه يخرج (التورية السيئة) كلما أعادت فتح الملف ؛ (ليس من المستغرب) هذا التأثير الجانبي غير المتنقل لعرض Unicode في شكل ANSI. :(

تلك البايتات المفيدة للغاية والمزعجة للغاية يجب أن تكون هناك ، ومن ثم عليهم الذهاب! (في وقت الترجمة).

يبدو الأمر سهلاً بما فيه الكفاية ، ما عليك سوى معالجة الملف (الملفات) المصدر ، وتجاهل البايت الثلاثة الأولى (إذا كانت UTF-8 BOM) ...

من المؤكد أنني لن أكون المعالج (عن طريق الإزالة اليدوية) في كل مرة أقوم بتجميعها ، لذلك لم أتمكن حتى من استخدام ملفات #Includ وهذا هو أنه ألم في المثل ، ولا يمكنني "رؤيتها"! .. دون الكثير من شعوذة.

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

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

المحلول 2

لقد تجولت أكثر قليلاً ، وقد عملت على حل مبدئي. لست سعيدًا تمامًا به لأنه يتضمن تعديل المصدر ، بينما كنت أبحث بالفعل عن حل تم إنشاؤه ، لكن يبدو أن G ++. Exe تقبل فقط Args سطر الأوامر (يرجى تصحيحي إذا كنت مخطئًا).

"الحل الخاص بي" هو أمر صعب بعض الشيء ، لكنه يعمل ، وهو بالتأكيد أفضل (بالنسبة لي) من أي حل آخر قابل للحياة صادفته (وهو لا شيء!) يتطلب إيلاء الاهتمام الواجب لمحررك "تم تعديل الملف خارجيًا" مربع الرسائل (إذا تم تحرير الملف) ، ولكن في الواقع ، لا يزال BOM في المحرر ، لذلك فهو نقطة نقاش إلى حد ما.

إنه اختراق سطر أوامر بسيط. أفضل خيارًا أكثر تكاملاً ، ولكن هنا هذا الخيار (وهو يعمل):

في CodeBlocks ، انتقل إلى: الإعدادات -> التحويل البرمجي وتصحيح الأخطاء -> إعدادات أخرى -> [خيارات متقدمة] -> Macro Macro:

اصنع هذه التعديلات إلى سطر الأوامر. يجب أن يكونوا جميعًا على سطر واحد (بالطبع) ، لكن من أجل الوضوح ، انفصلت عنهم:

cmd /c DropTheBOM.exe $file
& $compiler $options $includes -c $file -o $object // (use your compiler cmdline)
& MakeTheBOM.exe $file
// Write your own utils, or try here: http://code.google.com/p/utf-bom-utils/

PS: #ninclude لم يتم تجريد الملفات من BOM الخاصة بهم (إذا كان لديهم واحد) .. مفتاح Arg البسيط y/n arg للروتين الذي سيحول هذه الملفات ببساطة ببساطة ... (ولكن هو مجرد ملف مشكلة Windows ... ربما لهذا السبب لم يتم تلبية احتياجاتها ... أو هل يعرف أحد؟

نصائح أخرى

قد ترغب في النظر في خارجي جميع حرفية السلسلة إلى ملف منفصل على أي حال واستخدام أ loadLit() وظيفة (أو ما شابه) للحصول عليها في وقت التشغيل.

سيتيح لك ذلك الحصول على ملف واحد (مع BOM) يحتوي على الكل ستسهل الكثير من الأسلاك الخاصة بك ، وستجعل حياتك أسهل كثيرًا إذا اضطررت إلى تدويل طلبك.

نحن نفعل ذلك من خلال الأشياء الخاصة بنا ، لكن ضع في اعتبارك أن برامجنا من الفئة 1 يجب أن تكون i18n'ed لـ 21 منصبًا مختلفًا ، لذا فإننا نوفر الكثير من العمل من خلال القيام بذلك بهذه الطريقة :-) قد تختلف عدد الأميال.

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