ورود

View Full Version : ذخيره و بازيابي داده‌هاي فارسي در rms



nicolas_vires
جمعه 18 بهمن 1387, 00:02 صبح
با سلام
چگونه مي‌توان داده‌هاي فارسي را در Recordstore ذخيره كرد به نحوي كه داده‌ها پس از بازيابي به درستي نشان داده‌شوند و به صورت علامت سؤال در بيايند؟
برنامه را با netbean 6.0 مي‌نويسيم و در شبيه ساز مشكلي ندارد اما بر روي موبايل درست نشان نمي‌دهد.

با تشكر

mic_r_c
دوشنبه 28 بهمن 1387, 12:24 عصر
سلام،
من دقیقا نمیدونم این اطلاعات رو چه طوری دریافت کردی و یا می خوای ثبت کنی ولی راه حل هایی وجود داره که من تا حالا در موارد خیلی زیادی تو پروژه های خودم از اونها برای حل این مشکل استفاده کردم. اولا نباید دل به String برای تبدیل ببندی، درسته که String یک نوع داده ای Unicode است، اما اصطلاحا فیلتر شده یا یک نوع True type است. یعنی بر اساس تعاریف درون ساخت مقادیر را به حساب خودش تصحیح می کنه.
دوم اینکه اطلاعات رو باید از نوع char به نوع byte برای ثبت در RMS و بلعکس. پس باید از توابعی برای تبدیل استفاده کنی. من یه عادت بدی که دارم اینه که، اگه با اولین نگاه در اینترنت و خود کلاس های برنامه، تابعی که می خوام وجود نداشته باشه، خودم اون رو می نویسم. این توابع، کاملا درست کار می کنند ( بارها و بارها در پروژه های صنعتی ازشون استفاده کردم) ولی ممکنه بهینه نباشن:
برای تبدیل یک آرایه از نوع byte به نوع char:


// This function work correctly
public char[] byte_to_char(byte[] bytes)
{
char[] chr = new char[bytes.length];
int cnt=0,lp=0;

for(lp=0; lp<bytes.length; lp++)
{
if(bytes[lp] < 0)
chr[lp] = ((char)( ((int)256 + bytes[lp])));
else
chr[lp] = ((char)(bytes[lp] ));
}
return chr;
}
//-----------------------------------------------------------------------------------


برای تبدیل آرایه از نوع char به نوع byte:


// This function work correctly
public byte[] char_to_byte(char[] chars)
{
byte[] res = new byte[chars.length];
int lp=0;
for(lp=0; lp<chars.length; lp++)
{
res[lp] = (byte)chars[lp];
}

return res;
}


یک راه حل دیگه استفاده از یک کلاس فونت فارسی که توی وبلاگم [ هدف تبلیغات نیست به جون خودم (آقای کش*#@ز)] هست. اگر در Canvas می خواهید فارسی بنویسید از این کلاس استفاده کنید. آدرس وبلاگ در قسمت امضا وجود دارد.
در ضمن اگر به نتیجه رسیدید موفقیت خودتون رو در این پست اعلام کنید تا دیگران هم با اطمینان استفاده کنند.

افشین