Página 1 de 1
Harbour X NFE X MySql
Enviado: 15 Dez 2012 16:34
por JoséQuintas
Tenho salvo XMLs em banco MySql.
O problema é: conjunto de caracteres.
É complicado mexer com isso.
Fica dependente do conjunto do Harbour, do conjunto do ADO, e do conjunto do MySql.
Para notas emitidas, pelo sistema, eu já limito quais os caracteres podem ser usados.
Mas nota de fornecedor, pode conter caracteres especiais.
Como fazer pra isso dar certo?
- Usando ADO
- Que caracteres usar no banco
- Algum parâmetro adicional na string de conexão
- Alguma conversão no Harbour
Obs. pra caracteres especiais, uso o \ na string, o banco está como UTF-8, mas mesmo assim dá diferença em ã por exemplo, onde no XML tem Chr(195)+"ã"
Harbour X NFE X MySql
Enviado: 16 Dez 2012 05:56
por runner
Olá, José Quintas
Para evitar este tipo de situação o correto e transformar todos os caracteres em hexadecimal e ai salva no mysql, quando precisar da informação e só transformar em decimal.
Eu fiz assim para salvar imagem JPG no mysql.
Marcio Souza
Harbour X NFE X MySql
Enviado: 16 Dez 2012 14:55
por JoséQuintas
Isso vai dobrar o tamanho dos XMLs, e vai necessitar conversão...
Mas pelo menos vai ser uma solução.
Talvez no XML compense uma mistura, igual acontece com página de internet, em caracteres diferentes usar "e comercial" + hexa
O negócio agora vai planejar ser a mudança durante o uso.
Provavelmente uma flag pra indicar se o registro está convertido.
Valeu.
Harbour X NFE X MySql
Enviado: 16 Mar 2015 22:16
por fladimir
Deu certo José?
Harbour X NFE X MySql
Enviado: 16 Mar 2015 22:47
por alxsts
Olá!
Acho muita mão de obra converter para hexa e de hexa. Creio que usando o
collation correto no banco resolve o problema.
Tente criar a tabela abaixo, e inserir alguns XMLs. Veja se dá certo.
Código: Selecionar todos
CREATE TABLE 'acento' (
'id' int(4) unsigned zerofill NOT NULL AUTO_INCREMENT,
'texto' varchar(8000) COLLATE latin1_general_ci NOT NULL,
PRIMARY KEY ('id')
) ENGINE=InnoDb DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci ;
Pode postar um XML para testes?
Harbour X NFE X MySql
Enviado: 16 Mar 2015 23:37
por JoséQuintas
O emissor oficial, depois de algum tempo, estraga XMLs autorizados.
Após transmissão, o XML do governo está diferente do que foi enviado.
A maioria dos clientes nem sequer salva XMLs recebidos.
XMLs por email, alguns se estragam, porque certos softwares ou leitores de email teimam em usar codepage pra XMLs.
Se o governo e o cliente não se importam.... nem eu.
Faço o melhor que posso e só.
Para os XMLs emitidos, que são gerados pelo ERP, está tudo certo, não há problema.
Para os XMLs recebidos, eventualmente há algum que se deforma, mas muito poucos.
Tem que lembrar que:
Os XMLs do ERP são gerados em Ascii (ou UTF-8)
Os XMLs recebidos, podem ser em Ascii ou UTF-8
Resumindo: Sempre vai ter XML diferente, não importa o cuidado que tome.
Sobre o collation do MySql....
Tanto faz. O que manda é a conexão.
Basta setar a codepage na conexão, que será convertido pra ficar compatível com a codepage do banco de dados.
Aprendi isto nestes dias.
E a propósito: Em 2008, primeiro ano da NFE, os XMLs não continham o protocolo.
Hoje esses XMLs oficiais seriam considerados inválidos.
Será que compensou guardar?.... rs
Harbour X NFE X MySql
Enviado: 16 Mar 2015 23:46
por JoséQuintas
Só pra dar uma idéia, apesar do MySql não mostrar número exato de registros nessa tela.
Mais de 200.000 XMLs, desde 2008.
Já vi de tudo.