« Arranjo simples - Código delphi - Parte 1 | Home | Arranjo simples - Código delphi - Parte 2 »

Validador TD-REDF “Tipo de registro incorreto - Arquivo não UTF8″

By Paulo (CincoBytes) | January 19, 2008

Alguns desenvolvedores estão com dificuldades para validar o arquivo gerado conforme a portaria CAT-102/07, mais especificamente com relação ao formato de gravação que deve ser o UTF-8 (Unicod Transformation Format 8-bit); vou apresentar duas soluções (para dois casos diferentes):

- Se a versão do delphi que você utiliza possui a função AnsiToUtf8 você apenas precisa efetuar a conversão para UTF8 e depois inserir a sequência de caracteres #$EF + #$BB + #$BF no inicio do arquivo. No exemplo abaixo o arquivo esta em um TStringList…

...
Arquivo.Text := AnsiToUtf8(Arquivo.Text);
Arquivo[0] := #$EF + #$BB + #$BF + Arquivo[0];
...

- Se a versão do delphi que você utiliza não possui a função AnsiToUtf8 você pode utilizar o programa AnsiToUft8.exe que estou disponibilizando.

O exemplo abaixo mostra como utilizar o programa…

...
// PathAnsiToUTF8 é a pasta a onde esta o AnsiToUTF8.exe
PathAnsiToUTF8 := 'nome_da_pasta';
// NomeDoArquivo é o nome do arquivo que sera convertido
NomeDoArquivo := 'nome_do_arquivo.txt';
WinExec(pchar(PathAnsiToUTF8 +
  'AnsiToUTF8.exe ' + NomeDoArquivo), SW_HIDE);
...

Para sua informação… segue o código do programa AnsiToUft8.exe

program AnsiToUTF8;
  {$APPTYPE CONSOLE}
uses
  SysUtils, Classes;
var
  Arquivo: TStringList;
begin
  if FileExists(paramStr(1)) then
  begin
    Arquivo := TStringList.Create;
    Arquivo.LoadFromFile(paramStr(1));
    Arquivo.Text := AnsiToUtf8(Arquivo.Text);
    Arquivo[0] := #$EF + #$BB + #$BF + Arquivo[0];
    Arquivo.SaveToFile(paramStr(1));
    Arquivo.Destroy;
  end;
end.

Abraço a todos!

Topics: Delphi, Todos |

3 Responses to “Validador TD-REDF “Tipo de registro incorreto - Arquivo não UTF8″”

  1. EDW Says:
    February 21st, 2008 at 5:01 pm

    Valeu… ajudou um bocado
    como sempre digo: “o Gooogle sabe tudo”

  2. Leandro Says:
    April 8th, 2008 at 4:25 pm

    Nossa cara, simples e direto. Valeu mesmo

  3. Felipe Nunes Says:
    April 23rd, 2008 at 11:17 am

    Valew Paulo…Deu certinho

Comments