چهارشنبه 10 دی 1393, 20:35 عصر #1
مشکل با زبان فارسی در ویژوال استادیو
سلام
داخل ویژوال استادیو 2010 موقع استفاده از زبان فارسی، بعد از کامپایل، نوشته ام به صورت ؟؟؟؟؟؟؟ (علامت سوال) نمایش داده می شود! چه در استفاده از نوشته فارسی در set Text ویجت ها و چه در فایل ها، تو کیوت کریتور این مشکل رو ندارم.
از دستورات این چنینی هم استفاده کردم فایده ای نداشته
QString::fromUtf8
تو ویژوال استادیو از file -> advance save option هم استفاده کردم و حالت encoding رو به utf-8 و چندین مورد دیگه تغییر دادم جواب نداد
نمی خوام نوشته هام رو به صورتی که QApplication::translate (مثل دیزاینر) می خونه به صورت کد مثلا 133 ذخیره کنمنمونه کد مربوط به فایل ها:
QString unicodeString = "نوشته فارسی من به صورت علامت سوال ذخیره می گردد";
QFile fileOut("qt_unicode3.txt");
fileOut.open(QIODevice::ReadWrite | QIODevice::Text);
QTextStream streamFileOut(&fileOut);
streamFileOut.setCodec("UTF-8");
streamFileOut.setGenerateByteOrderMark(true);
streamFileOut << unicodeString;
streamFileOut.flush();
fileOut.close();چهارشنبه 10 دی 1393, 21:30 عصر #2
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
QString unicodeString = QString::fromUtf8("نوشته فارسی من به صورت علامت سوال ذخیره می گردد");
چهارشنبه 10 دی 1393, 21:53 عصر #3
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
QString unicodeString = QString::fromUtf8("نوشته فارسی من به صورت علامت سوال ذخیره می گردد");
جواب نمی ده!جمعه 12 دی 1393, 10:53 صبح #4
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
واقعا کسی تا به حال به این مشکل برنخورده و راه کاری برای حل نداره،
حداقل کمی به این مشکل فکر کنید شاید بعداً برای شما هم پیش بیادجمعه 12 دی 1393, 11:22 صبح #5
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
سلامدوست عزیز شما کد زیر رو در فایلی که مربوط به فرم یا سورس برنامه هستش قرار بدید نتیجه رو اعلام کنید.پ
#pragma execution_character_set("utf-8")جمعه 12 دی 1393, 11:46 صبح #6
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
سلام
دوست عزیز شما کد زیر رو در فایلی که مربوط به فرم یا سورس برنامه هستش قرار بدید نتیجه رو اعلام کنید.پ
سلام نه متاسفانه جواب نداد، در editor ویژوال استادیو 2010 متن فارسی نمایش داده می شه اما بعد از کامپایل ؟؟؟؟ نشون داده می شه!
#pragma execution_character_set("utf-8")
warning: unknown pragma
اما در ویژوال استادیو 2013 به نحو احسن و عالی جواب داد
ممنون که جواب دادید آخرین ویرایش به وسیله chikar : شنبه 13 دی 1393 در 19:12 عصرجمعه 12 دی 1393, 11:56 صبح #7
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
آیا امکانش هست که خطا از PDB فایل باشه؟! آخرین ویرایش به وسیله chikar : جمعه 12 دی 1393 در 17:32 عصرجمعه 12 دی 1393, 15:26 عصر #8
کاربر دائمی
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
من از این روش استفاده می کنم درست هم کار می کنه :
QString::fromWCharArray(L"می")
البته زمان هایی که فارسی و انگلیسی مخلوط نوشته میشه کار نمی کنه برای حل اون باید کد unicode حروف فارسی رو بزارید .روش استانداردتر می تونه این باشه که بجای فارسی انگلیسی بنوسید و در tr() قرار بدید و با استفاده از ابزار Qt Linguist برنامه رو ترجمه کنید .
آخرین ویرایش به وسیله omid_kma : جمعه 12 دی 1393 در 16:07 عصرجمعه 12 دی 1393, 17:18 عصر #9
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
encoding فایل مورد نظر رو بررسی بکن برادر. برای مثال با ++Notepad. من سالهاست اینطوری با کیوت کار میکنم. هیچ مشکلی نباید وجود داشته باشهجمعه 12 دی 1393, 17:18 عصر #10
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
من از این روش استفاده می کنم درست هم کار می کنه :
QString::fromWCharArray(L"می")البته زمان هایی که فارسی و انگلیسی مخلوط نوشته میشه کار نمی کنه برای حل اون باید کد unicode حروف فارسی رو بزارید .
روش استانداردتر می تونه این باشه که بجای فارسی انگلیسی بنوسید و در tr() قرار بدید و با استفاده از ابزار Qt Linguist برنامه رو ترجمه کنید .
ممنون جواب داد،عالی بود، حتی برای مخلوط انگلیسی و فارسی و اعداد!
خیلی لطف کردی آقا امیدفقط امکانش هست یه مثال بزنید برای تبدیل "حروف فارسی" به unicode و خوندن اون رو؟
آخرین ویرایش به وسیله chikar : جمعه 12 دی 1393 در 18:11 عصر
در tr() یعنی چی انگلیسی بگذاریم، منظورتون معنی لغت فارسی اون به صورت انگلیسی است یا فینگلیش؟جمعه 12 دی 1393, 17:24 عصر #11
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
encoding فایل مورد نظر رو بررسی بکن برادر. برای مثال با ++Notepad. من سالهاست اینطوری با کیوت کار میکنم. هیچ مشکلی نباید وجود داشته باشه
encoding فایل بر روی utf-8 هست، حتی من خود فایل رو توی notepad بر روی utf-8 قرار دادم و دوباره ذخیره کردم، برخی از تنظیمات ویژوال استادیو هم که بر روی utf-8 و حتی unicode قرار گرفت، فایده ای نداشت، حتی کل پروژه رو دوباره با save as با فرمت utf-8 , یا unicode ولی جواب نداد
حالا این آقا امید یه راه کار برای حل داده که جواب داد
مرسیجمعه 12 دی 1393, 18:25 عصر #12
کاربر دائمی
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
ممنون جواب داد،عالی بود، حتی برای مخلوط انگلیسی و فارسی و اعداد!
خیلی لطف کردی آقا امیدفقط امکانش هست یه مثال بزنید تبدیل حروف فارسی به unicode و خوندن اون رو؟
هیچی حالا که کار می کنه لازم نیست unicode
در tr() یعنی چی انگلیسی بگذاریم، منظورتون معنی لغت فارسی اون به صورت انگلیسی است یا فینگلیش؟
من قبلا یک مشکل داشتم می خواستم یکسری جمله رو بر اساس یکسری کاراکتر تقسیم کنم .
کاراکتر ها رو به این شکل تعریف می کردم کار نمی کرد :
QString filters = QString(" \n,;!*&@#'$%^.\t*/+:\"()[]=?-{}<>_") +
QString::fromWCharArray(L"؛؟،ˈ»«");
نهایتا مجبور شدم این طوری بنویسم
QString filters = QString(" \n,;!*&@#'$%^.\t*/+:\"()[]=?-{}<>_") +
QString::fromWCharArray(L"\x60c\x61f\x61b\x2c8\x0b b\x0ab");
یعنی به جای هر کاراکتر کد یونیکد . حالا اگر برای شما حل شد و مشکلی نداره دیگه نیازی نیست این کار.در مورد linguist هم این جا رو ببینید
http://doc.qt.io/qt-5/qtlinguist-index.html
یک مثال هم آقای مصافی قبلا گذاشته بودن :
https://barnamenevis.org/showthread.p...AC%D8%B1%D8%A7جمعه 12 دی 1393, 19:05 عصر #13
کاربر دائمی
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
encoding فایل مورد نظر رو بررسی بکن برادر. برای مثال با ++Notepad. من سالهاست اینطوری با کیوت کار میکنم. هیچ مشکلی نباید وجود داشته باشه
باگ ویژوال استودیو هستش http://support.microsoft.com/kb/2284668
بدون L"" نمی تونه تشخیص بده اون رشته utf8 هست.جمعه 12 دی 1393, 20:06 عصر #14
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
هیچی حالا که کار می کنه لازم نیست unicode
من قبلا یک مشکل داشتم می خواستم یکسری جمله رو بر اساس یکسری کاراکتر تقسیم کنم .
کاراکتر ها رو به این شکل تعریف می کردم کار نمی کرد :
QString filters = QString(" \n,;!*&@#'$%^.\t*/+:\"()[]=?-{}<>_") +
QString::fromWCharArray(L"؛؟،ˈ»«");نهایتا مجبور شدم این طوری بنویسم
QString filters = QString(" \n,;!*&@#'$%^.\t*/+:\"()[]=?-{}<>_") +
QString::fromWCharArray(L"\x60c\x61f\x61b\x2c8\x0b b\x0ab");یعنی به جای هر کاراکتر کد یونیکد . حالا اگر برای شما حل شد و مشکلی نداره دیگه نیازی نیست این کار.
در مورد linguist هم این جا رو ببینید
ممنون در همه موارد توجیه کننده بود و عالی راهنمایی کردید و تشکر فراوان از شما
http://doc.qt.io/qt-5/qtlinguist-index.html
یک مثال هم آقای مصافی قبلا گذاشته بودن :
https://barnamenevis.org/showthread.p...AC%D8%B1%D8%A7فقط سوال آخر: آیا می شه از این روش برای ورودی های مثل lineEdit هم استفاده کرد؟(البته در صورت دریافت کاراکترهای فارسی از lineEdit و ذخیره اون بدون این روش هم هیچ مشکلی نیست، و فقط این سوال جنبه راهنمایی و پرسشی از شما داره)باز هم ممنون
QString::fromWCharArray(L"متن فارسی")); //L is set
QString::fromWCharArray(my_lineEdit)); //L is Not setشنبه 13 دی 1393, 22:44 عصر #15
کاربر دائمی
نقل قول: مشکل با زبان فارسی در ویژوال استادیو
ممنون در همه موارد توجیه کننده بود و عالی راهنمایی کردید و تشکر فراوان از شمافقط سوال آخر: آیا می شه از این روش برای ورودی های مثل lineEdit هم استفاده کرد؟(البته در صورت دریافت کاراکترهای فارسی از lineEdit و ذخیره اون بدون این روش هم هیچ مشکلی نیست، و فقط این سوال جنبه راهنمایی و پرسشی از شما داره)باز هم ممنون
QString::fromWCharArray(L"متن فارسی")); //L is set
QString::fromWCharArray(my_lineEdit)); //L is Not set
برای lineEdit نیازی به L نیست از تابع .text() استفاده کنید
QString str=lineEdit.text();
مشکل تبدیل فقط برای وقتی هستش که رشته رو توی ادیتور ویژوال استودیو می نویسید