![]() |
Caracteres Raros Inicio Cadena
Hola Amigos, nuevamente solicitando su apoyo y EXPERTIS en delphi
Trabajo con: Delphi6, W10, FB 2.0. Les cuento, estoy trabajando con archivo planos separados por PIPEs ("|"). Para esto estoy usando archivo .INI para definir la estructura del archivo, componentes ADO y DBGRID para mostrar los datos. Pero estoy viendo q en la primera fila (no del archivo) si no en el DBGRID, en la primer columna aparacen unos caracteres raros -supongo que ha de ser para identificar el incio del archivo- los cuales ocupan espacio y no muestra la cadena completa: Código:
20250318071Código:
20250318071034Gracias de antemano. |
Ya vi como quitarselo.
Edité el archivo en el bloc de notas y le cambié la codificacion al archivo a UTF-8 y con eso quitó los caracteres raros en el DBGRID.... Existe alguna forma de cambiar la codificación automaticamente en DELPHI?? |
Eso es el BOF de un fichero utf8 mostrado con codificación iso8859
Un utf8 puedes guardarlo con BOF o sin BOF, en tu caso trae BOF (Begin Of File) Puedes eliminarlo sin problemas. Aunque en tu caso creo que es BOM, begin of mark, creo que se llama, similar a lo anterior. |
SOLUCION DESDE DELPHI (funcion añadida)
1. Leer el archivo como texto. 2. Detectar y eliminar el BOM si está presente. 3. Guardar el contenido como UTF-8 sin BOM. ¿Qué es el BOM? El BOM (Byte Order Mark) en UTF-8 son los tres primeros bytes del archivo: CÓDIGO EJEMPLO EN DELPHI
Cómo usarlo:
o puedes incluso sobreescribirlo si quieres:
Esa línea:
lo que hace es detectar los tres primeros caracteres del archivo codificados como bytes y comprobar si coinciden con la marca BOM de UTF-8, que son estos tres bytes hexadecimales: $EF = 239 = ï $BB = 187 = » $BF = 191 = ¿ Entonces, si ese BOM se interpreta como texto (por ejemplo, en un Memo.Lines.Text), lo que vas a ver es:
Esos son los caracteres raros que ves al principio de muchos archivos .ini, .txt, .json, etc., guardados como UTF-8 con BOM. |
Gracias "navbuoy", lo probaré y les comento como quedó.
Saludos y gracias por su tiempo a todos. |
Solucionado
Hola buenos dias.
El código que me proporcionó "navbuoy" me ayudo, me orientó a como solucionarlo. El problema con ese código es que no es para la version de Delphi que estoy usando (D6), por lo tanto lo cambie y quedó de este forma:
Y lo mando llamar asi:
Agregue un componente TFileListBox para agregar ahi los archivos que se van a procesar y tomar de ahi el nombre, que es enviado como parámetro al procedimiento "RemoveBOMFromFile". Gracias a todos. |
| La franja horaria es GMT +2. Ahora son las 11:29:23. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi