PDA

View Full Version : عدم نمایش مقادیر فارسی



ssmehizadeh
سه شنبه 14 خرداد 1387, 10:20 صبح
سلام
یه کد نوشته شده که اطلاعات رو از یه فایل میخونه و در بانک sql ذخیره می کنه

روش کار به این شکله که من اطلاعات رو از فایل می خونم و در متغیر از نوع string می ریزم و سپس در بانک ذخیره می کنم

اما وقتی مقادیر فارسی رو از فایل می خونم و در متغیر می ریزم .. مقادیر درون متغیر فارسی نیست ...

باید چیکار کنم که مشکلم حل بشه .

رضا عربلو
سه شنبه 14 خرداد 1387, 10:50 صبح
کدتان را اینجا بگذارید تا دوستان بتواندد کمک کنند.

ssmehizadeh
سه شنبه 14 خرداد 1387, 11:48 صبح
کد به این شکله :


SqlConnection con = new SqlConnection();
con.ConnectionString = "server=(local);uid=sa;pwd=123456;database=main";
SqlCommand com = new SqlCommand();
com.Connection = con;
com.CommandText = "delete from table1";
con.Open();
com.ExecuteNonQuery();
con.Close();
com.Parameters.Add("@name", SqlDbType.NVarChar, 50);
com.Parameters.Add("@family", SqlDbType.NVarChar, 50);
com.Parameters.Add("@num", SqlDbType.Char, 20);

using (StreamReader reader = File.OpenText(@"c:\test.txt"))
{
while ((line = reader.ReadLine()) != null)
{
string[] Split = line.Split(new Char[] { ';' });



com.Parameters["@name"].Value = Convert.ToString(Split[0]);
com.Parameters["@family"].Value = Convert.ToString(Split[1]);
com.Parameters["@num"].Value = Convert.ToString(Split[2]);

com.CommandText = "insert into table1(name,family,num) values(@name,@family,@num)";
con.Open();
com.ExecuteNonQuery();
con.Close();
}

combo_ci
سه شنبه 14 خرداد 1387, 12:55 عصر
با اين كلاسي كه گذاشتم اووون string كه از تو فايل خوندي به فارسي تبديل كن

ssmehizadeh
سه شنبه 14 خرداد 1387, 17:54 عصر
اصلا مشکل من تو اعداد نیست

رشته ها رو داره به صورت مربع در متغیر ذخیره می کنه و ...... در بانک هم به همین شکل نمایش می ده

combo_ci
سه شنبه 14 خرداد 1387, 18:20 عصر
كدت كه ظاهرا مشكلي نداره...ميتوني برنامتو بزاري ببينم چه كار كردي ...احتمال نميدي فقط رو سيستم خودت اين خطا رخ بده؟يعني ويندوزت خراب شده باشه..حالا كدت رو بزار يه تست بزنيم

samanes
سه شنبه 14 خرداد 1387, 18:30 عصر
ظاهرا دوستمون زمانی که داده رو از فایل می خونه براش مربع می ریزه تو متغیر
نمیدونم از چه دستوری برای خوندن از فایل استفاده میکنی ولی از هر چی که استفاده میکنی

System .Text.Encoding.Utf8

رو فراموش نکن مثلا


System.IO.StreamReader oReader = new System.IO.StreamReader(strPathName, System.Text.Encoding.UTF8);

ssmehizadeh
پنج شنبه 16 خرداد 1387, 10:00 صبح
با کد بالا که مشکل حل نشد

مشکل از ویندوز هم نیست چون در چند کامپیوتر دیگه هم امتحان کردم ... البته فایل text رو هم عوض کردم

دوستان گفته بودن برنامه ، خوب برنامه رو بالا گذاشتم

تعجب می کنم بچه هایی که با فایل کار کردنن چرا تا حالا با این مشکل برخود نکردن

ssmehizadeh
پنج شنبه 16 خرداد 1387, 11:45 صبح
فکر نمی کنید اشکال از StreamReader باشه ، که داره یونیکد رو پشتیبانی نمی کنه

آیا به غیر از StreamReader راه دیگه برای خوندن فایل هستش

ssmehizadeh
پنج شنبه 16 خرداد 1387, 18:38 عصر
من طبق سوالاتی که کردم به این نتیجه رسیدم که :

باید اطلاعات رو به صورت بیت به بیت بخونم و در بافر ذخیره کنم و سپس به database منتقل کنم

آیا کسی در این مورد اطلاعاتی داره ........

چطوری اطلاعات رو به صورت بیت به بیت بخونم در حالی که فایل من باینری نیست و text هستش

linux
پنج شنبه 16 خرداد 1387, 19:04 عصر
من طبق سوالاتی که کردم به این نتیجه رسیدم که :

باید اطلاعات رو به صورت بیت به بیت بخونم و در بافر ذخیره کنم و سپس به database منتقل کنم

آیا کسی در این مورد اطلاعاتی داره ........

چطوری اطلاعات رو به صورت بیت به بیت بخونم در حالی که فایل من باینری نیست و text هستش
کدت مشکلی نداره ، مشکل یا از فایل تکست هست یا از کالکشن ستینگ sql server

ssmehizadeh
پنج شنبه 16 خرداد 1387, 19:06 عصر
دوستان من وقتی کد رو به صورت زیر می نویسم به جای مربع داره علامت سوال میزنه (از همون روش خوندن بایت به بایت)

FileStream f = new FileStream("c:\\test.txt", FileMode.Open, FileAccess.Read);
byte [] a;
a = new byte[512];
int b = f.Read(a, 0, 512);
//MessageBox.Show(b.ToString());
string s = System.Text.Encoding.ASCII.GetString(a, 0, b);

MessageBox.Show(s);

حالا ممنون میشم بگید مشکلم از کجاست

در ضمن وقتی به جای Encoding.ASCII از Encoding.UTF8 استفاده می کنم باز مربع نشون میده

منتظر جوابم

ssmehizadeh
پنج شنبه 16 خرداد 1387, 19:09 عصر
دوست عزیز فایل text داره از یه برنامه تحت dos تشکیل میشه و بعد با استفاده از برنامه dostowin (برنامه ای که اکثرا از اون استفاده می کنن که فکر کنم با دلفی 5 نوشته شده) تبدیل به حروف فارسی تحت ویندوز میشه

حالا می خواهم محتوای این فایل رو در بانک قرار بدم

linux
پنج شنبه 16 خرداد 1387, 19:12 عصر
یک فایل تکست باز کن این خط را توش بنویس مثلا
علی ; علوی ; 1

حالا save as
encoding را utf-8 بگذار فایل را ذخیره کن و برنامه را اجرا کن و نتیجه را ببین ، اگر با این کار درست نشه در سمت sql مشکل داری

ssmehizadeh
پنج شنبه 16 خرداد 1387, 20:20 عصر
ممنون

مشکل از همین بود

مرسی