Clipper On Line • Ver Tópico - XML em UTF-8
Página 1 de 1

XML em UTF-8

MensagemEnviado: 26 Jul 2013 17:51
por Mario Mesquita
Boa tarde amigos.

Estou desenvolvendo um modulo gerador de arquivo XML. Não é a minha primeira vez. Mas dessa vez, tá me dando um problema, pois a entidade que vai receber o arquivo está rejeitando-o me informando que ele está em ANSI e ele o quer em UTF-8.

Eu uso o bom e velho @ SAY pra escrever um arquivo texto com extensão .XML. Sempre deu certo, mas agora com essa fiquei com esse abacaxi.

Buscando arqui no forum, achei um topico em que um colega nosso diz que usou uma variável que se concatena ao arquivo desse modo: xUtf8 := "".

Ainda assim, não deu certo, está sendo rejeitado. Será que não funciona ou isso tem que ser concatenado em todas as linhas geradas? Só o coloquei na primeira linha e editando o arquivo, ele aparece como UTF-8.

Estou errando em algo, com certeza. Quem puder me dar uma dica, desde já agradeço!

Abraço a todos e saudações,
Mario.

XML em UTF-8

MensagemEnviado: 26 Jul 2013 23:39
por Claudio Soto
Hola Mario.
Talvez este código te pueda ayudar, este ejemplo transforma caracteres en ANSI (codepage español) a UTF-8 y los guarda en archivo.
Saludos,
Claudio.
REQUEST HB_CODEPAGE_ESWIN

cAnsi := "áéíóú"
cUTF8 := HB_STRTOUTF8(cAnsi, "ESWIN")

HB_MemoWrit ("ejemplo.txt", cUTF8)

PD: Si no especificas el código de página en el segundo parámetro de HB_STRTOUTF8() la función toma el código de pagina seleccionado en el momento.

XML em UTF-8

MensagemEnviado: 28 Jul 2013 11:58
por Mario Mesquita
Bom dia, Claudio.

Obrigado pela ajuda. Estava há uma semana buscando uma solução.

Saudações e bom domingo,
Mario.

XML em UTF-8

MensagemEnviado: 29 Jul 2013 18:49
por Mario Mesquita
Boa noite a todos.

Mesmo com a dica do Claudio, não estou conseguindo gerar o arquivo no padrão UTF-8. Ele continua como ANSI.

Como informei, sempre fiz arquivos XML com @ SAY e deu certo. Desta vez, essa exigência de ser UTF-8.

Segui a dica da seguinte forma: Gerei um TXT normalmente, mas convertendo no fim:


xAnsi := HB_MEMOREAD(xArqXml)
xUtf8 := HB_STRTOUTF8(xAnsi, "PTISO")
HB_MEMOWRIT(nArqXml,xUtf8)



Mas não deu certo. Quando edito o arquivo, ele continua como padrão ANSI. Aí tentei usar a função HB_STRTOUTF8() em cada linha gerada:


           @ PROW()+1,0 SAY HB_STRTOUTF8('<AtoCep>', "PTISO")
           @ PROW()+1,0 SAY HB_STRTOUTF8('<TipoAtoCep>'+ALLTRIM(CENSEC->ATO_CEP)+'</TipoAtoCep>', "PTISO")
           @ PROW()+1,0 SAY HB_STRTOUTF8('<NaturezaEscritura>'+ALLTRIM(CENSEC->NAT_ESC)+'</NaturezaEscritura>', "PTISO")
           @ PROW()+1,0 SAY HB_STRTOUTF8('<DataAto>'+xDt+'</DataAto>', "PTISO")
           @ PROW()+1,0 SAY HB_STRTOUTF8('<Livro>'+ALLTRIM(NOTAS->LIVRO)+'</Livro>', "PTISO")



Ainda assim, não deu certo. Quando edito o arquivo, com o bloco de notas persiste a codificação ANSI.

Devo estar fazendo algo errado. Se alguem tiver mais uma dica, agradeço.

Saudações,
Mario.

XML em UTF-8

MensagemEnviado: 30 Jul 2013 09:56
por Jairo Maia
Olá Mario,

Com Base nisso:
Claudio Soto escreveu:PD: Si no especificas el código de página en el segundo parámetro de HB_STRTOUTF8() la función toma el código de pagina seleccionado en el momento.
Tente usar a função HB_STRTOUTF8() sem o segundo parâmetro, deixando que a função assuma a página de código usada para gerar o arquivo ANSI.

XML em UTF-8

MensagemEnviado: 01 Ago 2013 10:06
por Mario Mesquita
Bom dia a todos!

Jairo, eu tentei fazer dos dois modos. Eu coloquei "REQUEST HB_CODEPAGE_PTISO" para pt-br, e na função usei das duas formas.

Mas continua a ser gerado em ANSI e não em UTF-8.

Muito estranho.

Sds,
Mario.

XML em UTF-8

MensagemEnviado: 01 Ago 2013 12:32
por Jairo Maia
Olá Mario,

Muito estranho mesmo. Tem como você anexar um exemplo do seu arquivo gerado em ANSI? Gostaria de fazer alguns testes, porque deveria converter.

XML em UTF-8

MensagemEnviado: 01 Ago 2013 14:43
por Mario Mesquita
Boa tarde a todos.

Jairo, está no anexo. Como expliquei, estou fazendo como voces sugeriram, mas quando edito o arquivo no Bloco de Notas, ele continua a estar com a codificação ANSI.

Desde já, agradeço o apoio.

Sds,
Mario

XML em UTF-8

MensagemEnviado: 01 Ago 2013 22:52
por Claudio Soto
Hola Mario.

Proba con:
1) cambiar la primera linea del archivo para:<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
2) Usa HB_STRTOUTF8() para transformar a UTF-8 todo el archivo
3) agregale al inicio del archivo: xUtf8 := ""
4) Guardalo con HB_MEMOWRIT()

Saludos,
Claudio.