Saltar al contenido principal

Eliminar el UTF8-BOM inicial de un texto (string.strip_utf8_bom)

Declaración

texto_procesado = string.strip_utf8_bom(texto_original)

Parámetros

  • texto original
    Tipo texto, texto del que se eliminará el carácter UTF8-BOM

Valores devueltos

  • texto procesado
    Tipo texto, texto con el carácter UTF8-BOM eliminado

Descripción

El UTF8-BOM se representa mediante los tres caracteres invisibles "\xEF\xBB\xBF" al principio del documento (en el código fuente Lua, cuando una cadena comienza por \x y le siguen dos dígitos hexadecimales, representa un byte individual codificado con ese valor. Por ejemplo, \x58 representa el carácter X; consulta «Codificación ASCII» para ver la parte de caracteres imprimibles)

Ejemplo

txt = "\xEF\xBB\xBFXXTouch"
sys.alert(txt..', '..#txt) -- Imprime "XXTouch, 10"
--
txt = string.strip_utf8_bom(txt)
sys.alert(txt..', '..#txt) -- Imprime "XXTouch, 7"

Nota: el código anterior usa la función sys.alert, que no pertenece a este capítulo.

Información adicional

UTF-8 no necesita BOM, aunque el estándar Unicode permite usar BOM en UTF-8.
La forma estándar es UTF-8 sin BOM; colocar BOM en archivos UTF-8 es principalmente una costumbre de Microsoft (nota: también es una costumbre de Microsoft llamar «Unicode» a UTF-16 little-endian con BOM sin especificarlo en detalle).
BOM (byte order mark, marca de orden de bytes) se preparó para UTF-16 y UTF-32, y sirve para marcar el orden de bytes (byte order). Microsoft usa BOM en UTF-8 para distinguir claramente UTF-8 de codificaciones como ASCII, pero estos archivos pueden causar problemas en sistemas operativos distintos de Windows. Consulta más información en Wikipedia – Byte order mark.