« 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):
1º - 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]; ...
2º - 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!

February 21st, 2008 at 5:01 pm
Valeu… ajudou um bocado
como sempre digo: “o Gooogle sabe tudo”
April 8th, 2008 at 4:25 pm
Nossa cara, simples e direto. Valeu mesmo
April 23rd, 2008 at 11:17 am
Valew Paulo…Deu certinho