Remover o UTF8-BOM do início do texto (string.strip_utf8_bom)
Declaração
texto_processado = string.strip_utf8_bom(texto_original)
Parâmetros
- texto original
Texto do qual o caractere UTF8-BOM deve ser removido.
Valor retornado
- texto processado
Texto; retorna o texto sem o caractere UTF8-BOM.
Descrição
O UTF8-BOM aparece como os três caracteres invisíveis
"\xEF\xBB\xBF"no início do documento. (No código-fonte Lua,\xseguido de dois dígitos hexadecimais em uma string representa um único byte codificado por esse número. Por exemplo,\x58representa o caractereX; para a parte dos caracteres imprimíveis, consulte codificação ASCII.)
Exemplo
txt = "\xEF\xBB\xBFXXTouch"
sys.alert(txt..', '..#txt) -- saída "XXTouch, 10"
--
txt = string.strip_utf8_bom(txt)
sys.alert(txt..', '..#txt) -- saída "XXTouch, 7"
Observação: o código acima usa a função sys.alert, que não pertence a este capítulo.
Curiosidade
UTF-8 não precisa de BOM, embora o padrão Unicode permita seu uso em UTF-8.
O UTF-8 sem BOM é a forma padrão; colocar BOM em arquivos UTF-8 é principalmente um hábito da Microsoft (observação: chamar UTF-16 little-endian com BOM de “Unicode”, sem especificar mais, também é um hábito da Microsoft).
BOM (byte order mark, marca de ordem dos bytes) foi criado para UTF-16 e UTF-32, para indicar a ordem dos bytes (byte order). A Microsoft usa BOM em UTF-8 para distinguir claramente UTF-8 de codificações como ASCII, mas esses arquivos podem causar problemas em sistemas operacionais fora do Windows. Consulte mais informações na Wikipedia – Byte order mark.