PDA

View Full Version : خواندن فایل تکست در وی بی دات نت با اعمال utf8



saeidmobashery
جمعه 19 خرداد 1402, 19:04 عصر
سلام خدمت دوستان گران قدر
تابع زیر را برای خواندن متن از فایل تکست در ویژوال بیسیک دات نت vb.net پیدا کردم ولی قادر نیست اینکدینگ را به utf8 تبدیل کند ؛ راهنمایی لطفا

Dim Fs As New FileStream(Address, FileMode.Open, FileAccess.Read)
Dim SR As New StreamReader(Fs)
SR.BaseStream.Seek(0, SeekOrigin.Begin)
While SR.Peek > -1
ReadTXT &= SR.ReadLine() + vbNewLine
End While
SR.Close()

پرستو پارسایی
جمعه 19 خرداد 1402, 20:28 عصر
در این کد، ابتدا یک شیء از کلاس StreamReader با استفاده از مسیر فایل و انکدینگ UTF-8 ایجاد می‌شود. سپس با استفاده از روش ReadToEnd این شیء، تمام متن فایل خوانده شده و در متغیر ReadTXT ذخیره می‌شود. در نهایت، با استفاده از دستور Using، شیء StreamReader به طور خودکار بسته می‌شود.

Dim Address As String = "C:\example.txt"
Dim ReadTXT As String = ""
Using SR As New StreamReader(Address, Encoding.UTF8)
ReadTXT = SR.ReadToEnd()
End Using

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

Dim ReadTXT As String = ""
Dim encoding As Encoding = Encoding.UTF8
Using fs As New FileStream(Address, FileMode.Open, FileAccess.Read)
Using sr As New StreamReader(fs, encoding)
ReadTXT = sr.ReadToEnd()
End Using
End Using

saeidmobashery
جمعه 19 خرداد 1402, 21:16 عصر
سپاس از پاسخ شما ؛ متاسفانه جواب نداد فکر می‌کنید ایراد از کجاست ؟

در VBA با کد زیر می‌خوانم مشکلی نیست

Dim theStream As Object
Dim theContents As String
Set theStream = CreateObject("ADODB.Stream")
With theStream
.Charset = "UTF-8"
.Mode = 3 'adModeReadWrite
.Type = 2 'adTypeText
.Open
.LoadFromFile Address
theContents = .ReadText
.Close
End With
ReadTXT = theContents

در VB6 با کد زیر همان فایل تکست را می‌خوانم مشکلی نیست

Function ReadTXT(Address As String)
Dim strFile As String
Dim intFile As Integer
Dim strBody As String
strFile = Address
intFile = FreeFile
Open strFile For Input As intFile
strBody = Input(LOF(intFile), intFile)
Close intFile
ReadTXT = strBody
End Function

نمی‌دانم در VB.net چرا هر کاری می‌کنم نمی‌شود

پرستو پارسایی
جمعه 19 خرداد 1402, 23:16 عصر
برای استفاده از کلاسهای StreamReader و StreamWriter باید Imports System . IO را به پروژه خود اضافه کنید

saeidmobashery
جمعه 19 خرداد 1402, 23:50 عصر
در ابتدای پروژه نوشته شده ولی متاسفانه عمل نکرد 154719

پرستو پارسایی
شنبه 20 خرداد 1402, 11:00 صبح
این یک نمونه از خواندن و نوشتن و ساختن فایل تکست

mazoolagh
شنبه 20 خرداد 1402, 12:41 عصر
سلام و روز خوش
همون کد اول خانم پارسایی (پست 3) کاملا درسته،
ولی انکودینگ از ansi به یونیکد تبدیل نمیشه - خودتون هم اشاره کردین:

ولی قادر نیست اینکدینگ را به utf8 تبدیل کند

اینجوری بنویسین:
FUNCTION ReadTXT (Address AS STRING) AS STRING
USING SR AS NEW STREAMREADER(Address , ENCODING.GETENCODING(1256))
RETURN SR.READTOEND
END USING
END FUNCTION

mazoolagh
شنبه 20 خرداد 1402, 12:52 عصر
اگر تغییر انکودینگ نیاز دارین فایل رو بصورت باینری بخونین.

saeidmobashery
شنبه 20 خرداد 1402, 17:37 عصر
این یک نمونه از خواندن و نوشتن و ساختن فایل تکست

ممنونم خانم پارسایی فایل تکست مبدا بر حسب utf8 سیو نشده بود که سیواز گرفتم و کاملا عالی اجرا شد ممنونم از توجه شما 🌹