sábado, 2 de abril de 2016

Conversão de codificação de texto - Lazarus (Free Pascal)



Existem muitas linguagens de programação disponíveis para desenvolvimento nos vários sistemas operacionais por aí, mas quem vem do Delphi, com certeza vai se interessar pelo Lazarus, uma IDE cuja linguagem é praticamente a mesma do Delphi (Free Pascal), logicamente, esta é uma solução livre, então morrem os problemas como licenças, etc.

Mas o caso aqui é você está programando em Free Pascal e tem a necessidade (hoje em dia muito comum) de gerar páginas HTML seja para incluir em sites, seja para apresentar relatórios, enfim, suas mais diversas necessidades de publicação de conteúdos acessíveis através de qualquer browser.

Você sabe e faz tudo certo, desenvolve o programa, inclui o html com os campos dinâmicos, revisa o texto e na hora de apresentar no browser dezenas de caracteres aparecem esquisitos. 

Bem, este problema se dá pelo fato da codificação padrão do Lazarus ser o "UTF8", não vou entrar na definição de codificação, mas o que vou dizer é que ela é completamente diferente do padrão dos Browsers, que se utiliza de uma codificação mais genérica e flexível chamada "Unicode". O que fazer?

Na verdade não tem grande dificuldade em si.
Primeiro gere todo o html que será exportado e jogue-o em uma variável e depois use o comando da própria linguagem para alterar a codificação, como vou mostrar no exemplo abaixo:

Procedure ....
var
  html_export:string;
begin
  html_export := ' Todo o texto em HTML que será exportado... ';
  memo1.lines.add(UTF8toAnsi(html_export);
  memo1.lines.savetofile('arquivo.html');
end; 

Ou seja, basta pegar a variável a transformar em html e usar o UTF8toAnsi, sabendo que a codificação Ansi está totalmente contida nas definições do Unicode, podemos dizer que seu código aparecerá sem problemas ao ser lido pelo seu browser.

Obviamente, existem outras opções de conversão para as várias codificações disponíveis, seria bom dar uma olhada com calma no help oficial do Lazarus:


Seja Livre, use software Livre... Use Linux!

Nenhum comentário:

Postar um comentário