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

_______________________________________________________________________
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?

_______________________________________________________________________
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


#488230 - 09/04/2019 20:21:41

ALVAROVB2009
GUARULHOS
Cadast. em:Maio/2009


Última edição em 09/04/2019 21:59:24 por ALVAROVB2009

SrBrito, hj testei o seu módulo e infelizmente não deu certo, ele não converteu

Irei colocar o início de 2 arquivos e alguns trechos onde apresentou o caracter estranho


Eu fui colocar os trechos aqui e ai o site ajustou e não deu para mostrar a diferença, pela manhã irei pegar os 2 arquivos e vou anexar aqui

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


#488231 - 09/04/2019 22:03:37

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


Membro da equipe

 Anexos estao visíveis somente para usuários registrados

Como acho que não vai progredir muito explicando, veja um exemplo

_______________________________________________________________________
Virei Oráculo!
The end is nigh, be ready for the nukes!


Resposta escolhida #488235 - 10/04/2019 09:04:28

JONESPARIS
ERECHIM
Cadast. em:Fevereiro/2006


Olá, estava com este mesmo problema quando recebia o xml de nota de serviço de uma prefeitura. Resolvemos convertendo em Utf-8

  'Transforma em UFTF-8
    Const adTypeBinary = 1
    Const adSaveCreateOverwrite = 2
    Const adModeReadWrite = 3
    '*** Varíável q irá armazenar os dados nda NF ***
    Dim lTexto As String
    '*** Declara, instancia e abre o objeto Stream e seta com padrão UTF-8 ***
    Dim objStream
    Set objStream = CreateObject("ADODB.Stream")
    objStream.Charset = "UTF-8"
    objStream.Open
    objStream.WriteText (RichTextBox1.Text)
    '*** Cria o arquivo, se não existir, ou ainda grava por cima ***
    objStream.SaveToFile Label14.Caption & ".xml", adSaveCreateOverwrite
    objStream.Close
    Set objStream = Nothing
'Transforma em UFTF-8


Jones Paris

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


Tópico encerrado, respostas não sao permitidas
Encerrado por ALVAROVB2009 em 04/06/2019 19:40:17