ايران ويج

نسخه‌ی کامل: دریافت سورس سایت بصورت یونیکد
شما در حال مشاهده‌ی نسخه‌ی متنی این صفحه می‌باشید. مشاهده‌ی نسخه‌ی کامل با قالب بندی مناسب.
سلام خسته نباشید با این روش سورس سایت دریافت میکنم ولی حروف فارسی بصورت ناخانا هستن

چطور میتونم سورس سایت دریافت کنم بصورت یونیکد باشه؟


کد:
Private  Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA"  (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As  String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private  Declare Function InternetOpenUrl Lib "wininet.dll" Alias  "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As  String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal  lFlags As Long, ByVal lContext As Long) As Long
Private  Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As  Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long,  lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Const IF_FROM_CACHE = &H1000000
Private Const IF_MAKE_PERSISTENT = &H2000000
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Const BUFFER_LEN = 256
  
Public Function GetSource(sURL As String) As String
    Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
    Dim hInternet As Long, hSession As Long, lReturn As Long
    hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
    If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
    If hInternet Then
        iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
        sData = sBuffer
        Do While lReturn <> 0
            iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
            sData = sData + Mid(sBuffer, 1, lReturn)
        Loop
    End If
    iResult = InternetCloseHandle(hInternet)
    GetSource = sData
End Function
وقتی سایت رو دریافت میکنی؛ فایلی که سیو کردی رو چطوری میبینی؟!
وقتی ذخیره میکنم با نوت پد بصورت یونیکد هسته ولی وقتی باز با vb6 میخونم بصورت یونیکد نیسته
حتی در vb6 از کنترل های یونیکد استفاده میکنم بازم بی فایده است
خب پس درست دریافت میکنی! مشکل اینه که نمیتونی ببینش!! ورگنه درسافتش درسته
نه عزیز درست دریافت نمیکنه

با این روش راحت کد سایت دریافت میکنه

کد:
WebBrowser1.Navigate "http://google.com"

Do While WebBrowser1.ReadyState <> "4"
   '...
   '...
   '...
   DoEvents
Loop
text1.Text = WebBrowser1.Document.Body.InnerHTML

که بصورت یونیکد کد نمایش میده من دنبال روشی جز این روش هستم که سورس سایت با سریعترین روش بصورت یونیکد دریافت کنه
عذر میخوام چک کردم دیدم وقتی سورس ذخیره میکنم بازم بصورت ناخانا هسته
اول توابع زير رو داخل يك ماژول تعريف كن
کد php:
Dim fso As New FileSystemObject
Function fnWriteFile(StrFileNamestrString) As Boolean
    On Error 
GoTo ErrorHnd
        With fso
            fso
.deleteFile StrFileName
            StrName 
= .BuildPath(fso.GetParentFolderName(StrFileName), fso.GetFileName(StrFileName)) 
            
Set StrM = .CreateTextFile(StrNameTrueTrue)
            
StrM.Write (strString)
        
End With
        fnWriteFile 
True
        
Exit Function
ErrorHnd:
    
fnWriteFile False
End 
Function
Function 
fnReadFile(StrFileName) As String
    On Error 
GoTo ErrorHnd
        With fso
            Set StrM 
= .OpenTextFile(StrFileNameForReading)
            
With StrM
                
Do Until .AtEndOfStream
                    fnReadFile 
fnReadFile & .ReadLine vbCrLf
                Loop
            End With
        End With
        
Exit Function
ErrorHnd:
    
fnReadFile "ERROR"
End Function 

حالا با استفاده از اونها مي توني فايلي كه از اينترنت دانلود كرديد رو به يونيكد تبديل كنيد
مثال :
کد php:
Private Sub Command1_Click()
Dim Str As String
Str 
fnReadFile("D:\test.xml")
df fnWriteFile("D:\test.xml"Str)
End Sub 

اميدوارم كمك كنه
ممنون دنبال سریع ترین روش بودم روشی شما گفتین جوابگو نبود


اول microsoft activex data objects 2.5 library اضافه کنین

و اینم کد


کد:
Option Compare Text
Private Declare Function InternetOpen Lib "wininet.dll" Alias "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType As Long, ByVal sProxyName As String, ByVal sProxyBypass As String, ByVal lFlags As Long) As Long
Private Declare Function InternetOpenUrl Lib "wininet.dll" Alias "InternetOpenUrlA" (ByVal hInternetSession As Long, ByVal sURL As String, ByVal sHeaders As String, ByVal lHeadersLength As Long, ByVal lFlags As Long, ByVal lContext As Long) As Long
Private Declare Function InternetReadFile Lib "wininet.dll" (ByVal hFile As Long, ByVal sBuffer As String, ByVal lNumBytesToRead As Long, lNumberOfBytesRead As Long) As Integer
Private Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
Private Const IF_FROM_CACHE = &H1000000
Private Const IF_MAKE_PERSISTENT = &H2000000
Private Const IF_NO_CACHE_WRITE = &H4000000
Private Const BUFFER_LEN = 256
Public Function GetSource(sURL As String) As String
    Dim sBuffer As String * BUFFER_LEN, iResult As Integer, sData As String
    Dim hInternet As Long, hSession As Long, lReturn As Long
    hSession = InternetOpen("vb wininet", 1, vbNullString, vbNullString, 0)
    If hSession Then hInternet = InternetOpenUrl(hSession, sURL, vbNullString, 0, IF_NO_CACHE_WRITE, 0)
    If hInternet Then
        iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
        sData = sBuffer
        Do While lReturn <> 0
            iResult = InternetReadFile(hInternet, sBuffer, BUFFER_LEN, lReturn)
            sData = sData + Mid(sBuffer, 1, lReturn)
        Loop
    End If
    iResult = InternetCloseHandle(hInternet)
    GetSource = sData
End Function



Private Sub Command1_Click()

   out2 = GetSource("http://www.google.com")

    Open App.Path & "\web.txt" For Output As #1
    Print #1, out2
    Close #1
    
    Dim objStream, strData
Set objStream = CreateObject("ADODB.Stream")
objStream.Charset = "utf-8"
objStream.Open
objStream.LoadFromFile (App.Path & "\web.txt")
text1.Text = objStream.ReadText()
    
End Sub