PDA

View Full Version : مبتدی: تايپ فارسی در Console Application



fazelfazel
دوشنبه 23 بهمن 1391, 01:15 صبح
من در کنسول سی شارپ برنامه می نويسم
در خروجی برنامه می خواهم متن فارسی را تايپ کند بايد چه کار کنم؟
مثلآ در برنامه می نويسم

console.writeline("عدد را وارد کن")
در خروجی ؟؟؟؟؟؟؟؟؟؟؟ را چاپ می کند
لطفا کمک کنيد
با تشکر

OMID_BNT
شنبه 09 آذر 1392, 01:09 صبح
سلام
واقعا جستجو کردم پیدا نکردم شاید بد گشتم به هر حال اگه میدونید لینک بدید
من یه برنامه میخوام بنویسم تو محیط کنسول که بتونم کاراکتر فارسی بهش بدم و کارکتر فارسی چاپ کنم
فکر کنم با مبدل فقط بشه مشکل رو در سطح مبتدی حل کرد این مشکل به نظرم باید ریشه ای حل بشه

علیرضا حسن زاده
شنبه 09 آذر 1392, 09:58 صبح
کار زیاد سختی هم نیست
میتونید از فارسی سازهای تحت داس که تو برنامه های کنسول کار میکنن استفاده کنید مثل سایه
ولی برای اینکه بتونید فارسی بنویسید و فارسی ببینید باید برنامه تون تو حالت Fullscreen باشه و 80 ستون 25 سطر برای نمایش اکثر فارسی سازها مناسب هست و میتونید تو کل محیط صفحه فارسی چاپ کنید و بنویسید
تو #C نمیدونم چطوری میشه به وقفه ها و بایوس دسترسی داشت یا کلا امکان پذیر هست یا نه(تو زبان C این کارو کردم و بدون برنامه فارسی ساز هم برنامه فارسی نوشتم) اگه تونستین انجام بدین میتونید بدون نیاز به فارسی ساز برنامه خودتون فارسی رو داشته باشه تحت کنسول
برای کد کاراکتر های فارسی هم میتونید از مبدل داس به ویندوز که تو همین سایت گذاشتم استفاده کنید(تو تاپیکهای ایجاد شده توسط من بگردین هست)

soheyl_f
دوشنبه 11 آذر 1392, 13:47 عصر
سلام...
این بدرد میخوره؟: Console.OutputEncoding = System.Text.Encoding.Unicode

OMID_BNT
دوشنبه 11 آذر 1392, 14:14 عصر
سلام...
این بدرد میخوره؟: Console.OutputEncoding = System.Text.Encoding.Unicode

من همه انکد ها رو تست کردم هیچ کدوم جواب نداد





//Console.OutputEncoding = Encoding.UTF8;
//Console.OutputEncoding = Encoding.Unicode;
//Console.OutputEncoding = Encoding.ASCII;
//Console.OutputEncoding = Encoding.UTF7;
//Console.OutputEncoding = Encoding.ASCII;
//Console.OutputEncoding = Encoding.BigEndianUnicode;
//Console.OutputEncoding =.Encoding.UTF32;

OMID_BNT
دوشنبه 18 آذر 1392, 00:17 صبح
اساتید کسی نقطه نظری ندارد
درمورد اون برنامه هایی هم که شبیه کنسول بود که 10 و 15 ساله توی بانک ها و دیگر اداره ها استفاده میشد و میشه من یه تحقیقی کردم گفتن (گویا)که اون سیستم عامل شون یونیکس هست

rahnema1
دوشنبه 18 آذر 1392, 00:24 صبح
دوست عزیز دست از سر فارسی نویسی بردار جواب سوال شما هم اینه که میشه و خوب هم میشه شما بگید کجای کارش مشکل دارید تا واستون توضیح بدم

OMID_BNT
دوشنبه 18 آذر 1392, 00:40 صبح
مشکل سر همین مبحث این که یه مقداری در ورودی وارد کنیم که فارسی باشه و بتونیم یه مقدار رشته ای چاپ کنیم که فارسی باشه من یه عکس گذاشتم همونو میخوام پیداه سازی کنم

rahnema1
دوشنبه 18 آذر 1392, 01:04 صبح
بسیار خوب با توجه به عکس اولین مشکل اینه که شما داری از فونتهای راستری استفاده می کنی که کاراکترهای عربی را در خودشون ندارند بنابراین اولین گام تعریف یک فونت unicode برای console هست تا بتونه از اون استفاده کنه. فونت Courier New از جمله این فونتهااست اینطور که معلومه از ویندوز 7 استفاده می کنی من توی xp اینطور فونت courier new را به کنسول اضافه می کنم
با زدن دستور regedit وارد Registry Editor بشید و در قسمت
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
یک مدخل از نوع String value به نام 00 درست کنید «دو تا صفر». بعدش هم مقدار اون را برابر با Courier New بذارید بعد از این کار سیستم را restart کنید
وقتی سیستم روشن شد یک صفحه کنسول را باز کنید و روی نوار عنون اون کلیک راست کرده و گزینه properties را بزنید و در قسمت Font گزینه Courier New را انتخاب کنید و OK را بزنید و یک پنجره ظاهر میشه در اون گزینه دوم را انتخاب کنید تا این فونت همیشه بعنوان فونت پیش فرض باشه
خب حالا وقت نوشتن فارسیه اما کنسول حروف را به هم نمی چسبونه بلکه بصورت تک تک میاره راهش هم اینه که حروف اول وسط یا آخر که بصورت چسبان هستند کد اونها رو از جدول فونتها در بیاریم و به جای حروف صفحه کلید بذاریم مثل حرف س که اول یک کلمه باشه بصورت ﺳ در میاد یه چیزی شبیه کاری که فارسی سازها می کنند و برنامه نوشتنش هم کاری هم نداره. این رو امتحان کنید

System.Console.OutputEncoding=System.Text.Encoding .UTF8;
Console.WriteLine("ﻰﺳﺭﺎﭘ");

سیدسبحان
یک شنبه 18 مرداد 1394, 21:14 عصر
بسیار خوب با توجه به عکس اولین مشکل اینه که شما داری از فونتهای راستری استفاده می کنی که کاراکترهای عربی را در خودشون ندارند بنابراین اولین گام تعریف یک فونت unicode برای console هست تا بتونه از اون استفاده کنه. فونت Courier New از جمله این فونتهااست اینطور که معلومه از ویندوز 7 استفاده می کنی من توی xp اینطور فونت courier new را به کنسول اضافه می کنم
با زدن دستور regedit وارد Registry Editor بشید و در قسمت
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont
یک مدخل از نوع String value به نام 00 درست کنید «دو تا صفر». بعدش هم مقدار اون را برابر با Courier New بذارید بعد از این کار سیستم را restart کنید
وقتی سیستم روشن شد یک صفحه کنسول را باز کنید و روی نوار عنون اون کلیک راست کرده و گزینه properties را بزنید و در قسمت Font گزینه Courier New را انتخاب کنید و OK را بزنید و یک پنجره ظاهر میشه در اون گزینه دوم را انتخاب کنید تا این فونت همیشه بعنوان فونت پیش فرض باشه
خب حالا وقت نوشتن فارسیه اما کنسول حروف را به هم نمی چسبونه بلکه بصورت تک تک میاره راهش هم اینه که حروف اول وسط یا آخر که بصورت چسبان هستند کد اونها رو از جدول فونتها در بیاریم و به جای حروف صفحه کلید بذاریم مثل حرف س که اول یک کلمه باشه بصورت ﺳ در میاد یه چیزی شبیه کاری که فارسی سازها می کنند و برنامه نوشتنش هم کاری هم نداره. این رو امتحان کنید

System.Console.OutputEncoding=System.Text.Encoding .UTF8;
Console.WriteLine("ﻰﺳﺭﺎﭘ");



سلام دوست عزیز
ببخشید من این راههای شمارو رفتم ، ولی نمیدونم چطوری مشکل جدا بودن حروف رو حل کنم
اینکه میگید باید کد حروف رو از جدول فونت ها در بیارم و به جای حروف کیبورد بزارم، نمیدونم چطوری اینرو انجام بدم.
یعنی توی برنامه یه شرط بزارم که حروف رو شناسایی کنه و اون حروف چسبیده رو به جاشون بزاره؟!
میشه راهنمایی کنی؟
ممنون میشم.

pbm_soy
دوشنبه 19 مرداد 1394, 00:27 صبح
برنامه های قدیمی بانکهای مسکن و رفاه و چندتای دیگه تحت داس بودند و شبکه ای که استفاده میکردند ناول بود حتی اداره و بیمارستان تامین اجتماعی هم به همین ترتیب بود و تعدادی دیگه هم تحت یونیکس بود
در مورد فارسی نویسی تحت داس اون زمان باید بگم که برنامه های فارسی سازی بود که ابتدا شکل حروف لود شده از کارت گرافیک را با یک برنامه عوض میکردند البته از کد اسکی ۱۲۷به بعد را معمولا عوض میکردند اسم این برنامه ها اگه یادم مانده باشد vegaf.exe یا com بود و بعد در برنامه نویس در برنامه کلیدهای تایپ شده را کنترل میکرد و اگر کسی حرف a را تایپ میکرد بجاش حرف ش را نمایش میدادند و یا از برنامه های آماده و مقیم در حافظه که اینکار میکرد استفاده میکردند مانند فارسی ساز سپند و ساحر و چندتای دیگر
البته این فارسی سازها همگی از فارسی ساز اولیه شرکت نفت ایران ایده گرفته بودند
در ضمن باید بگم که این فارسی سازها در مد متنی ۲۵ در ۸۰ کار میکردند اگه شما میتونید و برنامه اتون در این مد کار میکنه میتوانید از این فارسی سازهای قدیمی استفاده کنید

FastCode
دوشنبه 19 مرداد 1394, 21:57 عصر
از یک ترمینال دیگه استفاده کن:
https://en.wikipedia.org/wiki/List_of_terminal_emulators
میتونی هم خودت بنویسی.من یک کد ساده برات میزارم:
134134
این کد فوق‌العاده بی کیفیت هست.برای کیفیت خوب میتونی برای نمونه کدهای vte رو ببینی.

mohammad8050
یک شنبه 17 اردیبهشت 1396, 21:09 عصر
سلام...
این بدرد میخوره؟: Console.OutputEncoding = System.Text.Encoding.Unicode

من اینو امتحان کردم درسته فقط باید از پرو پرتیس فونتو عوض کنی تا کار کنه