PDA

View Full Version : سوال: چاپ یک رشته فارسی



alirezabe
چهارشنبه 28 اردیبهشت 1390, 22:32 عصر
سلام

من یک سری اطلاعات فارسی از روی دیتابیس می گیرم و روی comboBox و tableview نمایش می دهم و درست کار می کند ولی حالا اگر بخواهم این اطلاعات را یک جوری پرینت بگیرم باید چه کار کنم
خودم می خواستم بریزم تو یک فایل html و آن را چاپ کنم ولی نمیشه و با اینکه coding مرور گر هم روی utf-8 است ولی باز هم نوشته فارسی را در هم نمایش می دهد می خواستم اگر امکانش هست راهنماییم کنید

با تشکر

حامد مصافی
چهارشنبه 28 اردیبهشت 1390, 23:00 عصر
اطلاعاتی که ارائه فرمودید کمی ناقص است. اما گمان می‌کنم علت استفاده نکردن از متد QString::fromUtf8() باشد

alirezabe
پنج شنبه 29 اردیبهشت 1390, 06:19 صبح
ببخشید اگر کم گفتم ولی کد اون قسمت به شکل زیر است ولی بد به فارسی تبدیل می شود مثلا به جای حرف ی یک مربع می گذارد



QFile file("out4.html");
if (!file.open(QIODevice::WriteOnly | QIODevice::Text))
{
return ItemsList;
}

QTextStream out(&file);
QString ali = ItemsList[1];

out << ali.toUtf8() ;

حامد مصافی
پنج شنبه 29 اردیبهشت 1390, 09:38 صبح
این تغییر رو در برنامه اعمال کنید و نتیجه رو بررسی کنید

QString ali = QString::fromUtf8(ItemsList[1]);

alirezabe
پنج شنبه 29 اردیبهشت 1390, 10:22 صبح
نه باز هم نشد

oldboy
پنج شنبه 29 اردیبهشت 1390, 13:46 عصر
من هم یه مشکل مثل این دارم. میخواستم یه تاپیک جدید درست کنم که وقتی اینو دیدم اینجا نوشتم.
من یه Label درست میکنم و متنشو فارسی میکنم، ولی موقع نمایش کاراکترها به صورت علامت سوال ظاهر میشه.


lblUsername=new QLabel(QString::fromUtf8("نام کاربری"));

oldboy
پنج شنبه 29 اردیبهشت 1390, 15:51 عصر
من جوابمو پیدا کردم. مشکل تو save فایل qt بود.
menu -> edit -> select encoding -> utf8 -> save with encoding

کلاسی که درست کرده بودم با encoding utf8 سیو نمیشد. البته از QString::fromUtf8 هم باید استفاده کنی.

alirezabe
پنج شنبه 29 اردیبهشت 1390, 21:16 عصر
خب من این تنظیمات رو انجام داده بودم می شه بپرسم شما راحت می تونید یک متن فارسی را در یک فایل بریزید یانه ؟

oldboy
پنج شنبه 29 اردیبهشت 1390, 23:50 عصر
متاسفانه تا بحال این کارو نکردم، چون تو Qt تازه کارم.
شما این دو خط رو به فایل پروژه اضافه کنید ببینید مشکلتون حل میشه یا نه.



CODECFORTR = UTF-8

CODEFORSRC = UTF-8

البته دقیق یادم نیست که ابتدای این دو خط، CODEC درست بود یا CODE.

alirezabe
جمعه 30 اردیبهشت 1390, 09:04 صبح
مشکل درست شد فقط کافی از تابع زیر برای QTextStream استفاده کنید

QTextStream out(&file);
out.setCodec("ISO 8859-1");
out << QString().fromUtf8(

حامد مصافی
جمعه 30 اردیبهشت 1390, 09:20 صبح
اتفاقا همین الان میخواستم جوابی برات پست کنم که دیدم ریشه مشکل رو پیدا کردی و پیشنهاد من هم استفاده از خط زیر بود:

out.setCodec("UTF-8");