[Lazarus-es] codificación de archivo: utf8 bom

José Mejuto joshyfun en gmail.com
Dom Abr 24 17:55:43 CEST 2011


Hello Paola,

Wednesday, April 20, 2011, 7:24:19 PM, you wrote:

PB> en un proyecto tenía esto:
PB> pnlTopVersion.Caption:= SysToUTF8('Versión: ') + GetAppVersion;
PB> y la palabra Versión aparecía correctamente.
PB> En un proyecto nuevo quise hacer lo mismo, y la ó salía con caracteres
PB> extraños.
PB> Bien.. problema de codificación de caracteres... me fijé en el proy.
PB> anterior y el .pas tenía la codificación utf8 BOM, y el que salía mal,
PB> solo UTF8. Pues la cambié y listo..
PB> Ahora mi duda: ¿qué es utf8 BOM?

Son 3 bytes que van al principio del fichero que indica que la
codificación es UTF8. Estos 3 bytes no producen ningún caracter de
salida, simplemente son una marca. Si codificas en UTF8 sin BOM el
sistema no sabe seguro si es un ANSI o un UTF8 y normalmente hace una
prueba, intenta procesar todo el archivo como UTF8, si encuentra una
secuencia UTF8 no válida, asume que es ANSI. El problema, que hay
secuencias ANSI que coinciden con UTF8 válidas y al revés, así que el
sistema sólo es estadísticamente correcto, o sea, si la muestra es
suficientemente grande es probable que acierte, pero si es pequeña
50%-50%.

-- 
Best regards,
 José





More information about the Lazarus-es mailing list