ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Codificação Acentos - Gerar HTML via Delphi

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
faccruz
Colaborador
Colaborador


Registrado: Terça-Feira, 20 de Julho de 2010
Mensagens: 1563

MensagemEnviada: Seg Nov 06, 2017 4:09 pm    Assunto: Codificação Acentos - Gerar HTML via Delphi Responder com Citação

Boa tarde a todos

estou utilizando esse código para gerar um arquivo html

Código:

var
  Arquivo: TextFile;
  Caminho: string;
  i: integer;
begin
  if FileExists(GetTempFolderWindows('TEMP') + '\' + 'teste.html') then
  begin
    DeleteFile(GetTempFolderWindows('TEMP') + '\' + 'teste.html');
  end;

  Caminho := GetTempFolderWindows('TEMP') + '\' + 'teste.html';
  AssignFile(Arquivo, Caminho);
  Rewrite(Arquivo);
  WriteLN(Arquivo, '<DOCTYPE>');
  WriteLN(Arquivo, '<html>');
  WriteLN(Arquivo, '  <head>');
  writeLN(Arquivo, '    meta charset ="'utf-8">); --> o forum não aceita essa tag
  WriteLN(Arquivo, '  </head>');
  WriteLN(Arquivo, '<body>');

  i := 0;
  while i < Memo1.Lines.Count do
  begin
    WriteLN(Arquivo, Memo1.Lines[i]);
    WriteLN(Arquivo, '</br>');
    inc(i);
  end;

  WriteLN(Arquivo, '</body>');
  WriteLN(Arquivo, '</html>');
  CloseFile(Arquivo);

  ShellExecute(Handle, 'open', Pchar(Caminho), nil, nil, SW_SHOWMAXIMIZED);


Porém ao abrir no browser, os caracteres acentuados estão ficando com uma interrogação, sendo que foi informado meta charset="utf-8" na geração do arquivo html.

Alguém pode me auxiliar?
_________________
Facc System - Sistemas para Computador
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
natanbh1
Colaborador
Colaborador


Registrado: Terça-Feira, 15 de Março de 2011
Mensagens: 3093
Localização: Belo Horizonte - MG

MensagemEnviada: Seg Nov 06, 2017 4:42 pm    Assunto: Responder com Citação

Veja um exemplo utilizando StringList e codificando o arquivo para UTF-8.

Código:
var
  HTML: TStringList;
  Caminho: string;
  i: integer;
begin
  HTML := TStringList.Create;
  with HTML do
  begin
    try
      Caminho := GetEnvironmentVariable('TEMP') + '\' + 'teste.html';

      Add('<html>');
      Add('<title>Teste Criação Arquivo HTML</title>');
      Add('<font size=4>Teste HTML</font>');
      Add('<meta charset = "UTF-8">');
      Add('<BR><BR>');

      for i := 0 to Memo1.Lines.Count - 1 do
      begin
        Add(UTF8Encode(Memo1.Lines[i]));
        Add('</br>');
      end;

      Add('</body>');
      Add('</html>');

      SaveToFile(Caminho, Encoding.UTF8);
      ShellExecute(Handle, 'open', Pchar(Caminho), nil, nil, SW_SHOWMAXIMIZED);
    finally
      Free;
    end;
  end;
end;

_________________
''A persistência é o caminho para o êxito.''
Charlie Chaplin
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
marcieldeg
Colaborador
Colaborador


Registrado: Terça-Feira, 5 de Abril de 2011
Mensagens: 1054
Localização: Vitória - ES

MensagemEnviada: Ter Nov 07, 2017 8:15 am    Assunto: Responder com Citação

Eu usaria o TStringStream, de forma muito similar ao exemplo do colega acima. TStringStream pode receber a codificação no construtor.
_________________
"Olha a interface da IDE! Será que ela é? Será que ela é? DELPHI!"
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
faccruz
Colaborador
Colaborador


Registrado: Terça-Feira, 20 de Julho de 2010
Mensagens: 1563

MensagemEnviada: Ter Nov 07, 2017 8:19 am    Assunto: Responder com Citação

Valeu pela ajuda natanbh1.

Só precisei alterar um pouco o código, devido eu estar utilizando o Delphi 7.


Código:
  try
    HTML := TStringList.Create;
    if FileExists(GetTempFolderWindows('TEMP') + '\' + 'teste.html') then
    begin
      DeleteFile(GetTempFolderWindows('TEMP') + '\' + 'teste.html');
    end;

    Caminho := GetTempFolderWindows('TEMP') + '\' + 'teste.html';

    HTML.Add('<DOCTYPE>');
    HTML.Add('<html>');
    HTML.Add('  <head>');
    HTML.Add('    <meta>');
    HTML.Add('  </head>');
    HTML.Add('<body>');

    i := 0;
    while i < Memo1.Lines.Count do
    begin
      HTML.Add(AnsiToUtf8(Memo1.Lines[i]));
      HTML.Add('</br>');
      inc(i);
    end;

    HTML.Add('</body>');
    HTML.Add('</html>');

    HTML.SaveToFile(Caminho);

    ShellExecute(Handle, 'open', Pchar(Caminho), nil, nil, SW_SHOWMAXIMIZED);
  finally
    FreeAndNil(HTML);
  end;

_________________
Facc System - Sistemas para Computador
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Visitar a homepage do Usuário
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB