موسسه خیریه محک

شهر ریاضی بازی-ریاضی

تغییر انکدینگ فایل ذخیره شده توسط ویژوال استودیو

0 امتیاز
634 نمایش

برنامه‌ی زیر رو برای چاپ یه متن فارسی در یک فایل در نظر بگیریم

const char str [] = "سلام";
FILE *f;
f = fopen("input1.txt", "w");
fprintf(f, str);
fclose(f);

فایل input1.txt1 قبل از این برنامه انکدینگش utf-8 هست ولی وقتی این برنامه رو اجرا می‌کنم انکدینگش به ansi تغییر می‌کنه. چرا<؟ چکارش می‌شه کرد؟

هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پرسیده شده دوشنبه ۱۷ تیر ۱۳۹۲ در C++ توسط prodo  

1 پاسخ

0 امتیاز

اول این که برای درج کاراکتر فارسی در فایل از wchar_t و برای رشته‌ی فارسی از wstring استفاده کنین.

دوم این که برای تعیین انکدینگ فایل از تابع _setmode که در io,h تعریف شده به علاوه‌ی ثابت _O_U8TEXT که در fcntl.h تعریف شده استفاده کنین.

برنامه به صورت زیر می‌شه

wtring wstr = L"سلام";
FILE *f;
f = fopen("input1.txt", "w");
_setmode(_fileno(f), _O_U8TEXT);
fwprintf(f, L"%s", wstr.c_str());
fclose(f);
هیچ پژوهش انسانی نمی‌تواند ادعای علمی بودن داشته باشد، مگر این‌که از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)
پاسخ داده شده دوشنبه ۱۷ تیر ۱۳۹۲ توسط prodo