PDA

View Full Version : سوال: مشکل در زمینه متنهای unicode



Argonod
شنبه 29 اسفند 1388, 00:15 صبح
با سلام خدمت دوستان گرامی

مشکل اینه که من فایل متنی فرض کنید مثلا subtitle یه فیلم رو باز میکنم توی listbox میخوام نمایش بدم بعد یه تغییراتی انجام بدم و دوباره تو یه فایل دیگه ذخیره کنم

اولا اینکه نمیتونم دستور صحیح خوندن فایل تو فرمت unicode پیدا کنم
و اینکه اگه ممکنه دستور نوشتن فایل رو هم بهم بگید که دوباره unicode بنویسم

ممنون میشم

Netsky
شنبه 29 اسفند 1388, 00:43 صبح
سلام .
با این کد میتونید یه فایل متنی رو بخونید :



System.IO.StreamReader Reader = System.IO.File.OpenText("C:\\Test.txt");
string strText = Reader.ReadToEnd();
Reader.Close();
MessageBox.Show(strText);

با این یکی هم میتونید داخل یه فایل متنی بنویسید :



System.IO.StreamWriter Writer = System.IO.File.AppendText("C:\\1.txt");
Writer.WriteLine("I'm a Text File");
Writer.Close();

بای بای ................

Argonod
شنبه 29 اسفند 1388, 12:14 عصر
ممنون از بابت پاسخ

اما من مشکل بازکردن فایل یا نوشتن اونارو ندارم
مشکل من تو خوندن متن هستش
فایلهایی که unicode هستند رو نمیتونم نمایش بدم. مثل subtitle های فارسی که با notepad قابل ویرایش و نمایش هستند

با تشکر مجدد

exlord
شنبه 29 اسفند 1388, 12:21 عصر
برای ادیت کردن هم توی Listbox نمیریزن........ بریزش توی RichTextBox

Netsky
شنبه 29 اسفند 1388, 12:28 عصر
سلام دوست عزیز .
من این کد رو امتحان کردم . بدون هیچ مشکلی متون فارسی رو نمایش میداد .
حالا نمیدونم مشکل شما از چی میتونه نشات گرفته باشه ؟؟؟ :متفکر:

FastCode
شنبه 29 اسفند 1388, 15:16 عصر
public static string ConvertString(string Source)
{
if (Source.Length == 0) return "";
//if (Source[0] == ' ') { Source = Microsoft.VisualBasic.Strings.StrReverse(Source); }
Source = Microsoft.VisualBasic.Strings.LTrim(Source);
string R = Source
.Replace("ì", "آ")//1
.Replace("É", "ا")//1
.Replace("æ", "ا")//01
.Replace("ô", "ب")//02
.Replace("Æ", "ب")//02
.Replace("ò", "پ")//03
.Replace("ö", "پ")//03
.Replace("ù", "ت")//04
.Replace("û", "ت")//04
.Replace("Ö", "ث")//05
.Replace("¢", "ج")//06
.Replace("Ü", "ج")//06
.Replace("¥", "چ")//07
.Replace("£", "چ")//07
.Replace("ƒ", "ح")//08
.Replace("₧", "ح")//08
.Replace("í", "خ")//09
.Replace("á", "خ")//09
.Replace("ó", "د")//10
.Replace("ú", "ذ")//11
.Replace("ñ", "ر")//12
.Replace("Ñ", "ز")//13
.Replace("ª", "ژ")//14
.Replace("¿", "س")//15
.Replace("º", "س")//15
.Replace("¬", "ش")//16
.Replace("⌐", "ش")//16
.Replace("½", "ص")//17
.Replace("¼", "ص")//17
.Replace("«", "ض")//18
.Replace("»", "ط")//19
.Replace("α", "ظ")//20
.Replace("Σ", "ع")//21
.Replace("π", "ع")//21
.Replace("Γ", "ع")//21
.Replace("Φ", "غ")//22
.Replace("τ", "غ")//22
.Replace("σ", "غ")//22
.Replace("Ω", "ف")//23
.Replace("Θ", "ف")//23
.Replace("∞", "ق")//24
.Replace("δ", "ق")//24
.Replace("ε", "ک")//25
.Replace("φ", "ک")//25
.Replace("≡", "گ")//26
.Replace("∩", "گ")//26
.Replace("≤", "ل")//27
.Replace("±", "ل")//27
.Replace("⌠", "م")//28
.Replace("⌡", "م")//28
.Replace("÷", "ن")//29
.Replace("≈", "ن")//92
.Replace("°", "و")//30
.Replace("·", "ه")//31
.Replace("∙", "ه")//31
.Replace("√", "ه")//31
.Replace("ⁿ", "ی")//32
.Replace("■", "ی")//32
.Replace("≥", "ال")//2701
.Replace("Ä", "ئ")//-32-
.Replace("(", "Ä")//-XX-
.Replace(")", "(")//-XX-
.Replace("Ä", ")")//-XX-
.Replace(" ", " ")//-XX-
.Replace(" ", " ")//-XX-
.Replace(" ", " ")//-XX-
.Replace(" ", " ")//-XX-
.Replace(" ", " ")//-XX-
.Replace(" ", " ")//-XX-
.Replace(" ", " ")//-XX-
;
if (R != Source) return N(Microsoft.VisualBasic.Strings.StrReverse(R)); //Microsoft.VisualBasic.Strings.StrReverse(R).Replac e(')', '(').Replace('(', ')');
return Source;
}
private static string N(string R)
{
string L = "";
string C;
for (int n = 0; n != R.Length; n++)
{
if (char.IsNumber(R[n]))
{
C = "";
next:
if (char.IsNumber(R[n]))
{
C = R[n] + C;
n++;
if (n == R.Length) return L + C;
goto next;
}
else
{
L += C + R[n];
continue;
}
}
else
L += R[n];
}
return L;
}




public static string ConvertNumber(string Source)
{
if (Source == null) return null;
string R = Source
.Replace('ü', '1')
.Replace('é', '2')
.Replace('â', '3')
.Replace('ä', '4')
.Replace('à', '5')
.Replace('å', '6')
.Replace('ç', '7')
.Replace('ê', '8')
.Replace('ë', '9')
.Replace('Ç', '0')
.Replace('-', '-')
.Replace('(', '(')
.Replace(')', ')')
;
return R;
}//


اگر نمیتونی ANSI رو نمایش بدی راهش اینه.
و گر نه باید کد رو بر عکس کنی.
کد پیجی که من دادم :IRAN SYSTEM.
فکر میکنم همین کدپیج باشه.
بابت HARDCODE بودنش متاسفم.
توی مورد خودم performance خیلی مهم بود.

Argonod
یک شنبه 01 فروردین 1389, 02:13 صبح
ممنون از تمامی عزیزان
چند سالی میشد که نبودم و حتی فکر نمیکردم که این سایت سرجاش مونده باشه
واقعا ذوق زده شدم دیدم که این سایت هنوز هست و از همیشه هم فعال تره

خودم یه چیزی پیدا کردم که کار رو برام حل کرد


richTextBox1.LoadFile(Filename, RichTextBoxStreamType.PlainText);