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\xy le siguen dos dígitos hexadecimales, representa un byte individual codificado con ese valor. Por ejemplo,\x58representa el carácterX; 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.