Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

jerere

[Resolvido] Codificação VB6

Recommended Posts

Estou baixando uma página html pelo VB6 com Inet.

O problema é que as palavras em português ficam distorcidas. Tem como resolver isso ou há alguma maneira melhor de fazer isso?

Estou enviando parte do código e parte do que ele me retorna:

________________________________________

With Inet1

.url = sURL

sData = .OpenURL(.url, 0)

end with

_________________________________________

<td style="text-align:justify;">

<span id="ctl00_ctl00_cph1_cph2_tcNavegacao_TabPanel1_rptPublicacoes_ctl46_lblTextoPublicacao"><span class="destaqueEncontro">

São Paulo 1ª Vara do Trabalho ÃNTEGRA DO DESPACHO NO SITE DO TRT NA INTERNET.</span>

<br />

_________________________________________

Por ex: quero que ao invés de "São Paulo" apareça "São Paulo" na string sData.

 

Desde já grato,

Compartilhar este post


Link para o post
Compartilhar em outros sites

A solução é a seguinte:

 

1. Jogar todo o conteúdo num arquivo texto. Obs: Importante(charset = "iso-8859-1")

 

' Arqmazena num arquivo temporário

adoStream.Open

adoStream.Charset = "ISO-8859-1"

adoStream.WriteText arquivoXml, adWriteLine

adoStream.SaveToFile "C:\Temp.txt", adSaveCreateOverWrite

adoStream.Close

 

2. Converter o arquivo para ANSI.

 

' Converte para ANSI

ConvertUTF8File "C:\Temp.txt", "C:\Temp.txt"

 

Public Function sUTF8ToUni(bySrc() As Byte) As String

' Converts a UTF-8 byte array to a Unicode string

Dim lBytes As Long, lNC As Long, lRet As Long

lBytes = UBound(bySrc) - LBound(bySrc) + 1

lNC = lBytes

sUTF8ToUni = String$(lNC, Chr(0))

lRet = MultiByteToWideChar(CP_UTF8, 0, VarPtr(bySrc(LBound(bySrc))), lBytes, StrPtr(sUTF8ToUni), lNC)

sUTF8ToUni = Left$(sUTF8ToUni, lRet)

End Function

Public Sub ConvertUTF8File(sUTF8File As String, sANSIFile As String)

Dim iFile As Integer, bData() As Byte, sData As String, lSize As Long

' Get the incoming data size

lSize = FileLen(sUTF8File)

If lSize > 0 Then

ReDim bData(0 To lSize - 1)

' Read the existing UTF-8 file

iFile = FreeFile()

Open sUTF8File For Binary As #iFile

Get #iFile, , bData

Close #iFile

' Convert all the data to Unicode (all VB Strings are Unicode)

sData = sUTF8ToUni(bData)

Else

sData = ""

End If

' Now write it all out to the ANSI file

iFile = FreeFile()

Open sANSIFile For Output As #iFile

Print #iFile, sData

Close iFile

End Sub

 

 

3. E então obter o conteúdo do arquivo novamente e armazenar numa string.

 

' Pega conteúdo convertido

Open "C:\Temp.txt" For Input As #1

strtexto = Input(FileLen("C:\Temp.txt"), #1)

Close #1

 

______________________________________________________________________________________________________________

Conclusão: Toda a codificação será feita pelo SO da máquina. O VB só dirá pra ele em que padrão quer trabalhar.

 

Sucesso à todos!

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.