PDA

View Full Version : سوال: چگونگی خوانده یک فایل متنی یونیکد unicode



mahmood744
جمعه 29 مهر 1390, 17:34 عصر
سلام به دوستان عزیزم
بچه ها یک مشکل خیلی عجیب دارم ، که حالم خیلی گرفته لطفا راهنماییم کنید :افسرده:

یک فایل متنی را با VB می سازم که فایل را هم ضمیمه کردم
وقتی این فایل را با Vb.net باز می کنم که کدش به صورت زیر است



Dim fs As New FileStream("D:\ListSMS1.TXT", FileMode.OpenOrCreate(
Dim sr As New StreamReader(fs(

Dim ArrStr(15) As String
While sr.EndOfStream = False
Ss = sr.ReadLine.Trim
ArrStr = Split(Ss, "|")
End While
sr.Close()
fs.Close()




متاسفانه فایل به صورت علامت سئوال ؟؟؟؟؟؟؟؟؟؟‌ خوانده می شه
اما این فایل را اگر با Notepad باز کنید درسته

لطفا منتظر کمکتان هستم
76886

sanay_esh
جمعه 29 مهر 1390, 18:20 عصر
سلام میتونی از متد StraemReader استفاده کنی
بدین صورت
Dim fs As New StreamReader("D:\ListSMS1.TXT", Encoding.UTF8)

mahmood744
جمعه 29 مهر 1390, 19:04 عصر
دوست عزیز از راهنمایتان متشکرم
اما متاسفانه جواب نداد
حتی کد زیر هم جواب نمی ده

Dim txt As New TextBox
Dim encoding_ASCII As Text.Encoding = Encoding.ASCII
Dim encoding_u7 As Text.Encoding = Encoding.UTF7
Dim encoding_u8 As Text.Encoding = Encoding.UTF8
Dim encoding_u16LE As Encoding = Encoding.Unicode
Dim encoding_u16BE As Encoding = Encoding.BigEndianUnicode
Dim encoding_u32 As Encoding = Encoding.UTF32


txt.Text = IO.File.ReadAllText("D:\Hesabwin3\ListSMS1.TXT", encoding_ASCII)
txt.Text = IO.File.ReadAllText("D:\Hesabwin3\ListSMS1.TXT", encoding_u7)
txt.Text = IO.File.ReadAllText("D:\Hesabwin3\ListSMS1.TXT", encoding_u16LE)
txt.Text = IO.File.ReadAllText("D:\Hesabwin3\ListSMS1.TXT", encoding_u16BE)
txt.Text = IO.File.ReadAllText("D:\Hesabwin3\ListSMS1.TXT", encoding_u32)
txt.Text = IO.File.ReadAllText("D:\Hesabwin3\ListSMS1.TXT", encoding_u8)
Dim lin As String = txt.Lines(15)

اما جالبی اینجاست که این فایل متنی را با VB می خوانم درست است و با Notepad هم باز می کنم درست است
فقط با VB.NET درست باز نمی شود

crazyfull
جمعه 29 مهر 1390, 19:20 عصر
فايلی که ضمينه کردی Unicode نيست ANCI هست

اين مشکلت هم بر ميگرده به [زبان سيستمی] ويندوزی که اين فايل توش ساخته شده(اگه دقت کرده باشيد زيرنويس بعضی از فيلمها هم همين مشکل رو دارن)... برای اينکه کلاً اين مشکل رو نداشته باشی بايد فايل رو به صورت Unicode ذخيره کنيد.
اگر هم به فايلها احتياج داريد ميتونيد با يه حلقه با تابع ChrW تمام بافر رو تبديل به حروف خوانا کنيد

mahmood744
جمعه 29 مهر 1390, 19:31 عصر
دوست عزیز این فایل را من همزمان با یک برنامه دیگه که به زبان Vb هست درست می کنم
متاسفانه در VB شما نمی توانید نوع کدینگ را برای ذخیره فایل تعیین کنید
و خود VB و دیگر برنامه ها هم به راحتی این فایل را می خوانند (چطور که VB.Net با این همه امکانات نمی تونه) :متعجب:

و دوم اینکه همین فایل با همین سیستم در VB.NET خوانده میشه و سیستم یکی است و باز هم خرابه
آخه وقتی کدینگ را ANSI هم می کنی باز هم در VB.NET خوانده نمیشه

:گریه:
شرمنده آیا این فایل که آپلود کردم در VB.NET سیستم شما هم خراب خوانده میشه

sina_saravi1
جمعه 29 مهر 1390, 19:50 عصر
من تست کردم متوجه شدم انکدینگش اونی نیست که شما فکر میکنی
بیا با این یه خط بخونش :

Dim txt As String = IO.File.ReadAllText("C:\Users\PurTahan\Downloads\ListSMS1\ListSMS1.txt", System.Text.Encoding.Default)

mahmood744
جمعه 29 مهر 1390, 20:01 عصر
من تست کردم متوجه شدم انکدینگش اونی نیست که شما فکر میکنی
بیا با این یه خط بخونش :

Dim txt As String = IO.File.ReadAllText("C:\Users\PurTahan\Downloads\ListSMS1\ListSMS1.txt", System.Text.Encoding.Default)



دوست عزیز دستت درد نکنه :بوس:
اگر بدونی چقدر کار کردم ولی نشد
اما خودمونیم جوابش خیلی راحت بود (من همه کدینگ ها را امتحان کردم جزء Default . فکر نمی کردم که VB.NEt خودش با فرض Default فایل را نخوانه :متعجب:)

باز هم متشکرم :تشویق: