اگه سی شارپ تحت کنسول کار کرده باشین، حتما می دونین که توی محیط کنسول نمیشه فارسی نوشت و وقتی حروف فارسی می نویسیم به صورت ؟؟؟؟؟؟ نشون داده میشه، توی این پست قراره یه روش معرفی کنم که باهاش می تونین توی محیط کنسول فارسی بنویسین.

محیط کنسول همون محیط CMD خودمونه که کد هایی که می نویسیم توش اجرا میشه، این محیط یه محیط متنیه و خبری از گرافیک و GUI نیست!


(یه نمونه از برنامه های سی شارپ تحت کنسول)


چجوری توی محیط کنسول فارسی بنویسیم؟

برای فارسی نویسی توی محیط سی شارپ کنسول اول از همه باید فونت محیط کنسول رو تغییر بدین، cmd رو باز کنین و روی ایکون cmd که گوشه بالا سمت چپ پنجره cmd هست کلیک راست کنین و properties رو انتخاب کنین.


به زبانه فونت برین و چک کنین که فونت Courier New توی فونت هاتون باشه، اگه بود که بعد از این که خدارو شکر کردین انتخابش کنین ولی اگه نبود یه فوش به خودتون بدین و طبق اموزش زیر از طریق ریجستری فونت رو اضافه کنین.


اول از همه ریجستری رو باز کنین و بعد به مسیر زیر برین

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\WindowsNT\CurrentVersion\Consloe\TrueTypeFont

بعد فایل 00 رو باز کنین و توی قسمت value data اسم فونت رو تایپ کنین و بعد سیوش کنین و یه بار سیستمو restart کنین.

یا این که یه فایل جدید به اسم 000 درست کنین و توی قسمت data value اسم فونت رو تایپ کنین و ذخیره کنین و سیستمو restart کنین.


بعد از این که فونت رو اضافه کردین ویژوال استودیو رو باز کنین و یه پروژه کنسولی جدید درست کنین، بعد از درست کردنش یه بار پروژه رو استارت کنین و وارد properties پنجره Cmd پروژه تون بشین.


بعد برین به زبانه فونت و از قسمت فونت همون فونت Courier New رو انتخاب کنین. خب حالا اگه توی کنسول متن فارسی بنویسین می بینین که متن شما به صورت فارسی ولی جدا جدا و از چپ به راست نشون داده میشه.


در مرحله بعدی متنی فارسی که دارنو کپی کنین توی یکی از نرم افزار های فارسی نویس مثل لئومون و بعد دوباره متنو توی برنامه تون از لئومون کپی کنین.  طبق عکس زیر:



پ ن: روی دکمه convert که کلیک کنین خودش متنو واستون کپی می کنه و شما فقط باید اونو توی برناهم تون past کنین.


حالا اگه برنامه رو اجرا کنین می بینین که کلمات راست به چپ نوشته شدن ولی از هم جدا جدا هستن که برای حل این مشکل باید دست به کد بشین و کد زیر رو توی برنامه تون بنویسین:

Console.OutputEncoding = System.Text.Encoding.UTF8;

خب کارمون تموم شد :) و اگه برنامه رو استارت کنین می بینین که متن فارسی بدون هیچ مشکلی توی محیط کنسول نمایش داده میشه.



برای این که بتونین متن فارسی هم از کاربر دریافت کنین باید کاربر متنشو توی یکی از نرم افزار های فارسی ساز بزنه بعد وارد برنامه کنه که درست نمایش داده بشه.


در کل استفاده از متن فارسی توی برنامه ها مشکلات زیادی داره و اصولا امکان پذیر نیست ولی با این روش ها و ترفند ها میشه توی محیط کنسول فارسی نوشت.


اگه زیاد توی فاز فارسی نویسی هستین یه سر به لینک های زیر هم بزنین:

لینک1               لینک2                  لینک3                   لینک4


باشد که آدم شویم  :|