الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مشاكل فى Io Stream

بدأه امجد مختار في 24 أغسطس 2008 · 7 رد · 788 مشاهدة · في Microsoft Visual C#.NET
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ورحمة الله وبركاته

لدى مشاكل فى الأمثلة التالية :

1-

using system.io
 FileStream fs = new  FileStream("2.txt", FileMode.Open, FileAccess.Read, FileShare.None);
 byte[] y= new byte[fs.Length];
 fs.Read(y, 0, y.Length);
 textbox1.Text = System.Text.Encoding.ASCII.GetString(y);
 fs.Close();

لا يتم قراءة الحروف العربية بل يتم قراءتها علامات استفهام فما السبب وما الحل؟

2-

using system.io
FileStream f = new FileStream("2.txt", FileMode.Open  , FileAccess.ReadWrite  , FileShare.None);
			BinaryWriter bw = new BinaryWriter(f);
			bw.Write("Name: ali");
			bw.Write ("\r\nAge: ");
			bw.Write(24);
			bw.Write("\r\nWeight: ");
			bw.Write (83);
			bw.Close();
			f.Close();

يتم كتابة رموز غريبة فى الملف بجانب الاسم وبدلاً من الأرقام فما سببها وما الحل ؟

3-

console.writline ("Enter Your Name: ");
string x=console.readline ();

يتم قراءة المتغير على سطر جديد كيف يمكن قراءة المتغير على نفس السطر طباعة الجملة ؟

وشكراً

اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد

من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن

#2

سأبدأ معك من السؤال الاخير ( وللحقيقة هو السؤال الذي انا متأكد من اجابته )

الامر بمنتهى البساطة هو

Console.Write ("Enter your name : ") ;

بخصوص السؤال الاول فاجابته (ولست متأكدأ من الاجابة ) ان اللغة العربية ليست بكود ASCII وانما UTF-8

#3

بالنسبة للسؤال الاول كما قلت فهو اللغة العربية تكويدها من النوع UTF-8

بالتالي كل ما عليك فعله هو تغيير الكود المستخدم ويصبح الامر كالتالي

textbox1.Text = System.Text.Encoding.UTF8.GetString(y);

مع العلم انه لابد ان يكون تم حفظ الملف باستخدام الكود UTF-8 وليس ANSI او اي شئ اخر لكي تتم قراءته صحيحاً

#4

1-

using system.io
FileStream fs = new  FileStream("2.txt", FileMode.Open, FileAccess.Read, FileShare.None);
byte[] y= new byte[fs.Length];
fs.Read(y, 0, y.Length);
textbox1.Text = System.Text.Encoding.ASCII.GetString(y);
fs.Close();

لا يتم قراءة الحروف العربية بل يتم قراءتها علامات استفهام فما السبب وما الحل؟

اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد

من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن

#5

استخدم الطريقة التالية :

StreamReader sr = new StreamReader(filePath, Encoding.Default);
textBox1.Text = sr.ReadToEnd();
sr.Close();

طبعا filePath هو مسار الملف النصي ، يقوم هذا المقطع بقراءة الملف كاملاً ووضعه في مربع النص .

السبب في المشكلة اختلاف الترميز كما ذكر الأخ Prof.Mendl

تحياتي

#6

آسف لقد أخطأت فى وضع السؤال أنا اقصد هذا السؤال الذى لم يتم الإجابة عليه ولقد حاولت حله باستخدام طريقتك ولكنى اريد معرفة كيف يتم معالجة الخطأ التالى

using system.io
FileStream f = new FileStream("2.txt", FileMode.Open  , FileAccess.ReadWrite  , FileShare.None);
			BinaryWriter bw = new BinaryWriter(f);
			bw.Write("Name: ali");
			bw.Write (20);
			bw.Close();
			f.Close();

يتم كتابة رموز غريبة فى الملف بجانب الاسم وبدلاً من الأرقام فما سببها وما الحل ؟

اللهم اهدنا فيمن هديت - اللهم صلى على سيدنا محمد

من أراد الدنيا فعليه بالقرآن ومن أراد الآخرة فعليه بالقرآن ومن أرادهما معاً فعليه بالقرآن

#7

هذا أمر طبيعي لأنك تكتب في الملف بالصيغة الثنائية .

إن أردت قراءة الملفات الناتجة باستخدام المفكرة فاستخدم الفئات StreamReader , StreamWriter لهذا الأمر .

وإن أردت قراءة الملف الذي قمت بتسجيله بهذه الصيغة ( أقصد الثنائية ) فسيكون الكود لقراءة ملفك كالتالي :

string str = bw.ReadString();
int n = bw.ReadInt32();

لأنك قمت بتخزين بياناتك بهذا الترتيب :)

تحياتي

#8
			FileStream f = new FileStream("2.txt", FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.None);
			StreamWriter sr = new StreamWriter(f, System.Text.Encoding.UTF8);

			sr.Write("anyTypeData");
			sr.WriteLine(30);
			sr.WriteLine(false);

			sr.Close();
			f.Close();

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…