PDA

View Full Version : سوال: فارسی کردن combo box ؟



ehsan446
شنبه 17 تیر 1391, 00:48 صبح
سلام
من یه combo box دارم که از دیتابیس Sql میخوام پرش کنم
اما وقتی اطلاعات فارسی رو از دیتابیس میخونه موقع نشون دادن به صورت علامت سوال نشون میده
چیکار کنم؟
پروژه پایانیم سر همین مونده:(

yegane8
شنبه 17 تیر 1391, 00:59 صبح
منم همین مشکل رو دارم
با Access کار می کنید؟

spiderman200700
شنبه 17 تیر 1391, 03:04 صبح
سلام
من یه combo box دارم که از دیتابیس Sql میخوام پرش کنم
اما وقتی اطلاعات فارسی رو از دیتابیس میخونه موقع نشون دادن به صورت علامت سوال نشون میده
چیکار کنم؟
پروژه پایانیم سر همین مونده:(

توی SQL Server اطلاعات درست نشون داده میشه؟ یا اونجا هم مشکل داره؟

spiderman200700
شنبه 17 تیر 1391, 03:07 صبح
از این متد استفاده کنید شاید مشکلتون حل بشه.
باید متنی که از دیتابیس میخونید رو به این متد بدید و متن decode شده رو استفاده کنید:
public String UTF8Decode(byte in[], int offset, int length) {
StringBuffer buff = new StringBuffer();
int max = offset + length;
for (int i = offset; i < max; i++) {
char c = 0;
if ((in[i] & 0x80) == 0) {
c = (char) in[i];
} else if ((in[i] & 0xe0) == 0xc0) // 11100000
{
c |= ((in[i] & 0x1f) << 6); // 00011111
i++;
c |= ((in[i] & 0x3f) << 0); // 00111111
} else if ((in[i] & 0xf0) == 0xe0) // 11110000
{
c |= ((in[i] & 0x0f) << 12); // 00001111
i++;
c |= ((in[i] & 0x3f) << 6); // 00111111
i++;
c |= ((in[i] & 0x3f) << 0); // 00111111
} else if ((in[i] & 0xf8) == 0xf0) // 11111000
{
c |= ((in[i] & 0x07) << 18); // 00000111 (move 18, not 16?)
i++;
c |= ((in[i] & 0x3f) << 12); // 00111111
i++;
c |= ((in[i] & 0x3f) << 6); // 00111111
i++;
c |= ((in[i] & 0x3f) << 0); // 00111111
} else {
c = '?';
}
buff.append(c);
}
return buff.toString();
}

باید اینطوری ازش استفاده کنی:
byte[] data = text.getBytes();
text = UTF8Decode(data, 0, data.length);
text متن decode شده هست و میتونید ازش استفاده کنید.
امیدوارم جواب بده.

ehsan446
شنبه 17 تیر 1391, 12:18 عصر
توی SQL Server اطلاعات درست نشون داده میشه؟ یا اونجا هم مشکل داره؟

آره اونجا که من از نوع nvarchar انتخاب کردم مشکلی نداره فارسی میگیره
از netbeans استفاده میکنم وقتی تو combobox اضافه میکنم نمیشناسه

ehsan446
شنبه 17 تیر 1391, 17:36 عصر
از این متد استفاده کنید شاید مشکلتون حل بشه.
باید متنی که از دیتابیس میخونید رو به این متد بدید و متن decode شده رو استفاده کنید:
public String UTF8Decode(byte in[], int offset, int length) {
StringBuffer buff = new StringBuffer();
int max = offset + length;
for (int i = offset; i < max; i++) {
char c = 0;
if ((in[i] & 0x80) == 0) {
c = (char) in[i];
} else if ((in[i] & 0xe0) == 0xc0) // 11100000
{
c |= ((in[i] & 0x1f) << 6); // 00011111
i++;
c |= ((in[i] & 0x3f) << 0); // 00111111
} else if ((in[i] & 0xf0) == 0xe0) // 11110000
{
c |= ((in[i] & 0x0f) << 12); // 00001111
i++;
c |= ((in[i] & 0x3f) << 6); // 00111111
i++;
c |= ((in[i] & 0x3f) << 0); // 00111111
} else if ((in[i] & 0xf8) == 0xf0) // 11111000
{
c |= ((in[i] & 0x07) << 18); // 00000111 (move 18, not 16?)
i++;
c |= ((in[i] & 0x3f) << 12); // 00111111
i++;
c |= ((in[i] & 0x3f) << 6); // 00111111
i++;
c |= ((in[i] & 0x3f) << 0); // 00111111
} else {
c = '?';
}
buff.append(c);
}
return buff.toString();
}

باید اینطوری ازش استفاده کنی:
byte[] data = text.getBytes();
text = UTF8Decode(data, 0, data.length);
text متن decode شده هست و میتونید ازش استفاده کنید.
امیدوارم جواب بده.

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


rst=in.executeQuery("select Distinct takhasos from doctor");
rst.last();
rc=rst.getRow();
rst.beforeFirst();
for(int i=0; rst.next();i++)
{
byte[] data = rst.getString("takhasos").getBytes();
String takhasos= UTF8Decode(data, 0, data.length);
Takhasos.addItem(takhasos);
}

rst.close();
in.close();
con.close();


من تو SQL کاملا فارسی دارم اما تو COMBO BOX به صورت علامت سوال نشون میده
کدی که دادی Error نمیده ولی فرقی نکرد
من با netbeans کار میکنم
راه دیگه ای وجود نداره؟:(

spiderman200700
شنبه 17 تیر 1391, 18:42 عصر
درSQL SErver در Properties دیتابیستون در قسمت Option یه گزینه هست به اسم Collation .
این گزینه رو روی Arabic_CI_AI_KS_WS تنظیم کن. شاید با این کار درست بشه

ehsan446
شنبه 17 تیر 1391, 19:20 عصر
درSQL SErver در Properties دیتابیستون در قسمت Option یه گزینه هست به اسم Collation .
این گزینه رو روی Arabic_CI_AI_KS_WS تنظیم کن. شاید با این کار درست بشه

نه مهندس اینم فایده نداشت:(

spiderman200700
شنبه 17 تیر 1391, 23:02 عصر
من که دیگه راهی به ذهنم نمیرسه. تا حالا همچین مشکلی نداشتم :لبخندساده:

ehsan446
یک شنبه 18 تیر 1391, 12:00 عصر
مرسی:ناراحت:
اساتید عزیز کسی نیست به دادم برسه؟
دو رو دیگ تحویل پروژه مه
:گریه: