Página 1 de 1
Manipular arquivos com acento
Enviado: 05 Fev 2024 09:42
por marco.prodata
Caros,
Estou fazendo um pequeno programa que recebe o nome de um arquivo como parametro para fazer algumas leituras, só que alguns arquivos com acentuação no nome do mesmo, não estão funcionando:
Exemplo: "MovimentaçãoPixBB (43).txt"
quando executo:
processa "MovimentaçãoPixBB (43).txt"
e dentro do aplicativo testo um if file(), retorna que o arquivo não existe.
Código: Selecionar todos
REQUEST HB_CODEPAGE_PTISO
REQUEST HB_CODEPAGE_PT850
function main
*************
para wArquivo
hb_SetCodepage("PT850")
altd()
if !file(wArquivo)
return nil
endif
Como resolver?
Manipular arquivos com acento
Enviado: 05 Fev 2024 10:56
por sygecom
Faça um teste usando o caminho completo do arquivo e, usando: hb_FileExists()
exemplo:
if hb_FileExists('c:\arquivo\MovimentaçãoPixBB (43).txt')
alert('achou')
else
alert('nao achou')
endif
Manipular arquivos com acento
Enviado: 05 Fev 2024 11:04
por Itamar M. Lins Jr.
Olá!
Tem que usar a mesma página de código do nome do arquivo.
No editor do prg usando pagina (x) no seu aplicativo 850 e foi criado o arquivo usando UTF8.(hipótese)
Saudações,
Itamar M. Lins Jr.
Manipular arquivos com acento
Enviado: 05 Fev 2024 11:39
por marco.prodata
Itamar M. Lins Jr. escreveu:Olá!
Tem que usar a mesma página de código do nome do arquivo.
No editor do prg usando pagina (x) no seu aplicativo 850 e foi criado o arquivo usando UTF8.(hipótese)
Saudações,
Itamar M. Lins Jr.
Abrindo o arquivo pelo VSCode indica que o mesmo foi feito em UTF8, o conteúdo dele está em UTF8, o problema está no parâmetro que passo do prompt, esse parâmetro que não estou conseguindo converter, se eu forçar um if file("Movimentação.txt") por exemplo funciona, o problema é que os acentos do nome do arquivo ele buga na conversão.
Manipular arquivos com acento
Enviado: 05 Fev 2024 11:40
por marco.prodata
sygecom escreveu:Faça um teste usando o caminho completo do arquivo e, usando: hb_FileExists()
Deu o mesmo erro, acusando que o arquivo não existe.
Manipular arquivos com acento
Enviado: 05 Fev 2024 11:43
por marco.prodata
Um teste, se eu usar a função directory("mov*.txt") ele pega o nome corretos dos arquivos, o problema esta quando chamo:
meuPrograma <nomeDoArquivo>.txt
Manipular arquivos com acento
Enviado: 05 Fev 2024 13:58
por Itamar M. Lins Jr.
Olá!
Código: Selecionar todos
IF hb_FileExists( hb_Translate(wArquivo,"PT850","UTF8EX") )
Saudações,
Itamar M. Lins Jr.
Manipular arquivos com acento
Enviado: 05 Fev 2024 14:43
por marco.prodata
Achei a solução em uma resposta antiga do Przmek na lista do harbour, por padrão as strings passadas pelo prompt de comando como argumentos sempre vem com o codepage EN, e os parametros recebidos antes de conseguir mudar o codepage no main, logo, buga os caracteres antes, o jeito é executar a mudança de codepage antes do main.
INIT PROCEDURE CLIPINIT
SET(_SET_CODEPAGE,"PT850")
RETURN
essa procedure é executada antes do main.
Manipular arquivos com acento
Enviado: 05 Fev 2024 14:57
por JoséQuintas
Talvez assim:
Código: Selecionar todos
FUNCTION Main( ... )
LOCAL aParList
Set( _SET_CODEPAGE, "PTISO" )
aParList := hb_AParams()
Se der certo, pode passar a receber uma lista de arquivos, e não apenas um.