CARACTERES ESTRANHO NO XML

 Tópico anterior Próximo tópico Novo tópico

CARACTERES ESTRANHO NO XML

VB / VBA

 Compartilhe  Compartilhe  Compartilhe
#486902 - 04/02/2019 11:30:57

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Pessoal estou com um problema que alguns registros veem com caracteres estranhos, falei com o pessoal de onde puxo o xml e segundo eles eu teria que tratar quando puxar o xml, estou usando esse esquema para criar um obj e trazer o xml que salvo no arquivo
Segundo o manual deles não tem onde eu colocar o formato do xml e nem fala em qual formato esta

    Dim Obj As MSXML2.ServerXMLHTTP
    Set Obj = New MSXML2.ServerXMLHTTP
         Obj.Open "GET", "https://www.site.com/vendas_by_nr?sessao=" & LoginEntrada & "&vendas=" & NVendas
    Obj.send

Essa é a primeira linha que vem no xml, e nesse formato o xml já vem com caracteres estranhos
<?xml version="1.0" encoding="iso-8859-1"?>

Nesse caso seriam eles que teriam que ajustar para não vir com caracter estranho ou tem como eu colocar um formato quando for buscar o xml

Agradeço desde já a todos

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


#487043 - 08/02/2019 18:00:42

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Alguém pode me dar uma força ou ja pegou esse problema?

Estou tentando que importar os dados, com esses caracteres estranhos

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


#487044 - 08/02/2019 18:34:31

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
Abra no browser e veja se ainda assim esses "caracteres estranhos" aparecem

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#487045 - 08/02/2019 18:58:45

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Abri aqui no Mozzilla e não aparecem

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


#487048 - 08/02/2019 23:40:03

KERPLUNK
RIO GRANDE DO SUL
Cadast. em:Junho/2009


Membro da equipe
E isso não te diz nada?

_______________________________________________________________________
Gostaria de ter seu sistema Desktop "traduzido" para uma interface web? Podemos conversar...
Virei Oráculo!
The end is nigh, be ready for the nukes!


#487052 - 09/02/2019 13:20:49

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Kerplunk , eu pego o xml e gravo ele em um arquivo e depois eu leio esse arquivo
Quando gravo a informações no arquivo é que esses caracteres estranhos aparecem

Como no browser não aparece, significa que esta correto o xml

Tenho que baixar todo o xml primeiro para depois começar a gravar ele no banco, pois são vendas que preciso transportar para o banco e em apenas uma determinada hora, que é mais barata a conexão e vem muita venda

Então nessa forma, tem como eu baixar esse xml para que não venham esses caracteres estranhos?
A forma que uso é essa

Dim Obj As MSXML2.ServerXMLHTTP
Set Obj = New MSXML2.ServerXMLHTTP
    Obj.Open "GET", "https://www.site.com/vendas_by_nr?sessao=" & LoginEntrada & "&vendas=" & NVendas
Obj.send

Open DiretorioRaiz & NomeNovaPasta & "\vendas" & NArqVenda & ".xml" For Binary Access Write As #1
    Put #1, , Obj.responseText
Close #1


Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


#487054 - 09/02/2019 18:49:05

SRBRITO
JOAO PESSOA
Cadast. em:Abril/2012


Cole essa função:

  Public Function UTF8_Encode(ByVal sStr As String)
    Dim l As Long, lChar As Integer, sUtf8 As String

    For l = 1 To Len(sStr)
        lChar = AscW(Mid(sStr, l, 1))

        If lChar < 128 Then
            sUtf8 = sUtf8 + Mid(sStr, l, 1)
        ElseIf ((lChar > 127) And (lChar < 2048)) Then
            sUtf8 = sUtf8 + Chr(((lChar \ 64) Or 192))
            sUtf8 = sUtf8 + Chr(((lChar And 63) Or 128))
        Else
            sUtf8 = sUtf8 + Chr(((lChar \ 144) Or 234))
            sUtf8 = sUtf8 + Chr((((lChar \ 64) And 63) Or 128))
            sUtf8 = sUtf8 + Chr(((lChar And 63) Or 128))
        End If
    Next l

    UTF8_Encode = sUtf8
End Function


E no obj.response.text substitua assim:

  Open DiretorioRaiz & NomeNovaPasta & "\vendas" & NArqVenda & ".xml" For Binary Access Write As #1
    Put #1, , UTF8_Encode(Obj.responseText)
Close #1


Agora sim você poderá ler esse xml e gravar no banco.
OBS.: Kerplunk já falou mil vezes, xml não deve ser tratado como arquivo. você pode abri-lo como um recordset...

Essa função acima substitui os caracteres para utf-8 e pode ser lido no vb da maneira que você deseja...



#487055 - 09/02/2019 19:12:12

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


SRBRITO Obrigado pelo retorno

Sei que o Kerplunk ja falou milhões de vezes para não tratar como um arquivo, más como comentei não tenho muito o que fazer, pois tenho que puxar as vendas para poder importar para o banco
E cada busca que eu faço, vem com 10 vendas e tenho que fazer isso muitas vendas, na média mais de 300x no período mais barato.
Então eu baixo todas as vendas, e depois começo a fazer a importação para o banco, pois é muita coisa e demora bastante

Más agradeço por essa função , segunda já irei testar

Teoria é quando se sabe tudo, e nada funciona. Prática e quando tudo funciona e ninguém sabe porque.
"Aquele que quer aprender gosta que lhe digam quando esta errado;
só o tolo não gosta de ser corrigido -"Prov.12:1


 Tópico anterior Próximo tópico Novo tópico


Para responder este tópico o login é requerido
Se você já possui uma conta de usuário por favor faça seu login
Se você não possui uma conta de usuário use a opção Criar usuário