RAD XE10 - XMLDocument - Encoding UTF-8

24/05/2016

0

Olá Amigos,
Estou precisando de uma ajudinha.
Possuo 2 aplicação desenvolvida no RAD XE2. Uma tem como objeto a digitação de dados que serão gravados em um arquivo XML e a outra, responsável por ler, validar e importar o XML gerado para o Banco de Dados.
Resolvi testar o Rad XE10 Seatle e recompilei as aplicações. Quase tudo funciona, mas na hora de importar os dados a versão compilada no XE10 não reconhece o encoding (UTF-8).
Se eu exportar pela versão do XE10 e importar pela versão compilada no XE2 funciona normalmente.

Para importa e gerar os arquivo XML eu utilizei o XML Mapper para criar um arquivo de configuração (xtr). Quando testo a importação dos dados do XML dentro do XML Mapper, ele me exibe os carcteres corretamente (ã, ç, etc).
Para importação de dados utilizo um XMLTransformProvider ("ligado" ao arquivo de configuração xtr) , e o XMLTransformProvider é "ligado" a um clientdataset onde os dados são carregados. Acho que é neste ponto que o problema ocorre, pois quando visualizo os dados do clientdataset, eles aparecem incorretos (os carates especiais não são reconhecidos).

Se alguém puder dar uma dica, fico grato.
Mcbatalha

Mcbatalha

Responder

Post mais votado

28/06/2016

Olá Gilson,
com ajuda de um colaborador do stackoverflow, criei, momentaneamente, a rotina abaixo para resolver a questão até que eu tenha tempo de pesquisar melhor uma solução definitiva.
Se vc ainda não resolveu, ela pode te ajudar.

procedure TFrm_Principal.Tratar_Campos_Com_UTF8(var Data_Set : TClientDataSet);
var i:integer;
    f:TField;
    s : string;
begin
   Data_Set.First;
   while not Data_Set.eof do
      begin
      Data_Set.Edit;
      for i:=0 to Data_Set.fields.count-1 do
      begin
         if (Data_Set.fields[i] is TStringField) or (Data_Set.fields[i] is TMemoField)  then
         begin
            f:= Data_Set.fields[i];
            s:= Utf8ToString(f.AsString);
            f.asstring := s;
         end;
      end;
      Data_Set.Post;

      Data_Set.Next;
   end;
   Data_Set.First;
end;


Espero ter ajudado.

Mcbatalha

Mcbatalha
Responder

Mais Posts

17/06/2016

Gilson Carmo

Olá Meu amigo, estou com o mesmo problema que você, voce conseguiu encontrar solução para isso?

Obrigado
Responder

17/06/2016

Mcbatalha

Nada, ninguém respondeu.
Estou "escrevendo" o código para ler o XML na "unha"
Acho que o problema esta no CDTS, pois qdo testo a leitura em projeto (mostro o conteúdo em um grid), vem certinho.
Se achar algo, não esquece de postar aki
Responder

28/06/2016

Gilson Carmo

Olá McBatalha, muito obrigado pela ajuda.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar