نمایش نتایج 1 تا 10 از 10

نام تاپیک: مشکل خوندن متن فارسی از فایل

  1. #1
    کاربر دائمی آواتار Ner'zhul Arthas
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    پشت کامپیوتر
    پست
    180

    Tick مشکل خوندن متن فارسی از فایل

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

    مشکل چیه و چیکار کنم؟

  2. #2
    کاربر دائمی آواتار vahidiran
    تاریخ عضویت
    اردیبهشت 1385
    محل زندگی
    کرمان
    پست
    211
    اگه با خود Vb.net فارسی داخلش بنویسی براش مشکلی پیش نمیاد

  3. #3
    کاربر دائمی آواتار Ner'zhul Arthas
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    پشت کامپیوتر
    پست
    180
    داخل فایله یا داخل برنامه؟

    راه دیگه ای هم نداره برای خوندن؟

  4. #4
    کاربر دائمی آواتار Ner'zhul Arthas
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    پشت کامپیوتر
    پست
    180
    یه روش پیدا کردم.

    فایل تکست رو به جای
    ANSI
    Unicode
    ذخیره کنیم درست میشه.
    ولی حجمش میشه دو برابر.

    راه دیگه ای نیست؟

  5. #5
    کاربر دائمی آواتار ghafoori
    تاریخ عضویت
    مرداد 1384
    محل زندگی
    اصفهان-نجف اباد
    پست
    1,111

    Smile

    دوست عزیز از کلاسهایه فضای text استفاده کردی
    در این نیم اسپیس توابعی برای تبدیل از asni به unicode است مثلا کد زیر

    Dim s As String
    System.Text.ASCIIEncoding.Convert(System.Text.Enco ding.ASCII, System.Text.Encoding.BigEndianUnicode, b)
    Dim d As System.Text.UTF8Encoding
    s = d.GetString(b)


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

  6. #6
    کاربر دائمی آواتار Ner'zhul Arthas
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    پشت کامپیوتر
    پست
    180

    Talking

    مرسی حل شد.

    شکل درست استفادش اینجوریه:


    Dim b() As Byte = System.IO.File.ReadAllBytes("adresefile.txt")
    Dim d As New System.Text.UnicodeEncoding
    b = System.Text.UnicodeEncoding.Convert(System.Text.En coding.Default, System.Text.Encoding.Unicode, b)
    Textbox1.Text = d.GetString(b)

  7. #7
    کاربر دائمی آواتار Ner'zhul Arthas
    تاریخ عضویت
    اسفند 1384
    محل زندگی
    پشت کامپیوتر
    پست
    180

    Talking

    شکل درست ترش هم اینجوریه:

    Textbox1.text = System.IO.File.ReadAllText("...\file.txt", System.Text.Encoding.Default)

  8. #8

    نقل قول: مشکل خوندن متن فارسی از فایل

    سلام
    اگر فایل را خط به خط بخواهیم بخوانیم چطور این مشکل را باید حل کنیم.
    چون برنامه ای که من نوشتم متن را خط به خط پردازش می کند. اگر بخواهم یکجا فایل را بخوانم تقریباً باید سورسش را از اول بنویسم و خیلی کار می برد.
    من از LineInput و PrintLine استفاده می کنم.
    البته عمده مسأله من هنگام ذخیره است. می خواهم به دلخواه ansi یا یونیکد یا یونیکد UTF-8 ذخیره کنم، بدون این که از نوت پد استفاده شود خود برنامه این کار را بکند.
    اگر تابع یا کدی برای تبدیل String با یک Encoding به یک Encoding دیگر سراغ دارید لطفاً راهنمایی کنید.

  9. #9

    نقل قول: مشکل خوندن متن فارسی از فایل

    نقل قول نوشته شده توسط sanjar.ir مشاهده تاپیک
    اگر تابع یا کدی برای تبدیل String با یک Encoding به یک Encoding دیگر سراغ دارید لطفاً راهنمایی کنید.
    من یک تابع نوشتم که رشته را به انسی تبدیل می کند و یک تابع نوشتم که رشته را به یونیکد تبدیل می کند.
    اما عیبش این است که به جای رم از هارد یا ... استفاده می کند و این باعث کاهش سرعت می شود، اگر کسی می تواند راهنمایی کند تا این عیب بر طرف شود.

        Function یونیکد2اسکی(ByVal یسطرمتن As String) As String
    Dim محتوافایل() As String = {یسطرمتن}
    Dim آدرس_فایل_موقت, متن_موقت As String
    Dim ff, ط As Integer
    ff = FreeFile()
    آدرس_فایل_موقت = "stringtemp.tmp"
    'نوشتن با کدبندی پیشفرض
    FileOpen(ff, آدرس_فایل_موقت, OpenMode.Output, OpenAccess.Write, OpenShare.LockReadWrite)
    PrintLine(ff, یسطرمتن)
    FileClose(ff)
    'خواندن به عنوان یونیکد
    محتوافایل = IO.File.ReadAllLines(آدرس_فایل_موقت, System.Text.Encoding.UTF8)
    یونیکد2اسکی = محتوافایل(0)
    '
    'حذف بدون بازگشت
    FileOpen(ff, آدرس_فایل_موقت, OpenMode.Binary, OpenAccess.Write, OpenShare.LockReadWrite)
    متن_موقت = "" : ط = یسطرمتن.Length
    For ح = 0 To ط
    متن_موقت += "........"
    Next
    FilePut(ff, متن_موقت)
    FileClose(ff)
    Kill(آدرس_فایل_موقت)
    End Function
    Function اسکی2یونیکد(ByVal یسطرمتن As String) As String
    Dim محتوافایل() As String = {یسطرمتن}
    Dim آدرس_فایل_موقت, متن_موقت As String
    Dim ff, ط As Integer
    ff = FreeFile()
    آدرس_فایل_موقت = "stringtemp.tmp"
    'نوشتن با کدبندی پیشفرض
    FileOpen(ff, آدرس_فایل_موقت, OpenMode.Output, OpenAccess.Write, OpenShare.LockReadWrite)
    PrintLine(ff, یسطرمتن)
    FileClose(ff)
    'خواندن به عنوان اسکی
    محتوافایل = IO.File.ReadAllLines(آدرس_فایل_موقت, System.Text.Encoding.ASCII)
    اسکی2یونیکد = محتوافایل(0)
    '
    'حذف بدون بازگشت
    FileOpen(ff, آدرس_فایل_موقت, OpenMode.Binary, OpenAccess.Write, OpenShare.LockReadWrite)
    متن_موقت = "" : ط = یسطرمتن.Length
    For ح = 0 To ط
    متن_موقت += "........"
    Next
    FilePut(ff, متن_موقت)
    FileClose(ff)
    Kill(آدرس_فایل_موقت)
    End Function


  10. #10
    کاربر دائمی آواتار a_mohammadi_m
    تاریخ عضویت
    اردیبهشت 1384
    محل زندگی
    زنجان
    پست
    230

    نقل قول: مشکل خوندن متن فارسی از فایل

    سلام
    در این مثال یک فایل متنی فارسی تحت Dos با کد پیج ایران سیستم تبدیل به یک DataTable با کد پیج Unicode می شود
    در طراحی فرم از یک Boton ، یک Textbox ، یک OpenFileDialog و یک DataGrid استفاده شده
    متن Textbox برای تعیین کاراکتر جدا کننده فیلدهای اطلاعاتی در نظر گرفته شده ( مثلا , یا ; یا | یا هر کاراکتر مجاز دیگه مثل فاصله خالی که باید قبل از کلیک روی دکمه تعیین شده باشه )



    Imports System.IO
    Imports System.Text
    Imports System.Data.OleDb
    Imports IranSystemConvertor

    Public Class frmGetCSV_Data


    Private Sub btnSelectFile_Click(sender As Object, e As EventArgs) Handles btnSelectFile.Click

    Try
    OpenFileDialog1.ShowDialog()
    grdData.DataSource = GetCsvData(OpenFileDialog1.FileName, txtSeprator.Text)

    Catch ex As Exception
    MsgBox(ex.Message)
    End Try

    End Sub
    Public Function GetCsvData(ByVal strFileName As String, ByVal strSeprator As String) As DataTable

    Dim dt As New DataTable()
    Dim line As String = Nothing

    Dim i As Integer = 0

    Try
    Using sr As StreamReader = New StreamReader(strFileName, System.Text.Encoding.GetEncoding(1256))
    line = sr.ReadLine()
    Do While line IsNot Nothing

    Dim data() As String = line.Split(strSeprator)
    Dim DataUnicode(data.GetUpperBound(0)) As String

    For j = data.GetLowerBound(0) To data.GetUpperBound(0)
    DataUnicode(j) = ConvertTo.Unicode(data(j))
    Next
    If DataUnicode.Length > 0 Then
    If i = 0 Then
    For Each item In DataUnicode
    dt.Columns.Add(New DataColumn())
    Next item
    i += 1
    End If
    Dim row As DataRow = dt.NewRow()
    row.ItemArray = DataUnicode
    dt.Rows.Add(row)
    End If
    line = sr.ReadLine()

    Loop
    End Using

    Return dt
    Catch ex As Exception
    Return Nothing
    End Try
    End Function

    End Class


    در ضمن DLL مبدل نیز ضمیمه شد
    فایل های ضمیمه فایل های ضمیمه
    آخرین ویرایش به وسیله a_mohammadi_m : جمعه 24 مرداد 1393 در 02:19 صبح

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •