Cita:
Empezado por navbuoy
El problema esta en esta linea:
Código Delphi [-]OutputLine := WideString(Buffer);
Ese cast no convierte correctamente texto con acentos o caracteres especiales si el texto viene codificado en UTF-8
Tienes que reemplazar esa línea con una conversión correcta desde UTF-8 a WideString, usando UTF8Decode, que está disponible en Delphi 2005.
Modifica esto:
Código Delphi [-]OutputLine := WideString(Buffer);
ConsolaSalida := ConsolaSalida + OutputLine;
LOG(CONSOLAsALIDA);
por esto:
Código Delphi [-]var
TempStr: UTF8String;
begin
SetString(TempStr, Buffer, BytesRead);
OutputLine := UTF8Decode(TempStr); ConsolaSalida := ConsolaSalida + OutputLine;
LOG(OutputLine);
Si sabés que no está usando UTF-8, sino una codificación ANSI típica (como Latin1 / Windows-1252), utiliza esto en su lugar:
Código Delphi [-]OutputLine := AnsiToWide(Buffer);
Pero en general, UTF-8 es lo estándar moderno, así que UTF8Decode() es lo más seguro.
|
Hola
creo que uso Latin1 el problema es que parece que la función AnsiToWide no esta en delphi 2005, le he preguntado al chatgpt y me ha montado una función pero no ha funcionado
aun así, después he probado lo del utf8Decode me ha preguntado: contains international characters. Do you wish to save this file in UTF8 encoding? If you choose 'NO', the international characters will be lost. le he dicho que 'yes' y el programa ha seguido funcionando, el decode ha funcionado a la hora de escribir en el log hasta que ha llegao a la linea que tiene un acento y la ha dejado en blanco:
Cita:
23/05/2025 13:39:37: utf8->
23/05/2025 13:39:37: WideString(AnsiToWide(Buffer))-> FACTURA|1/250090|Incorrecto|1124|El valor del campo TipoImpositivo no est* incluido en la lista de valores permitidos.
|