Pular para o conteúdo principal

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, \x seguido de dois dígitos hexadecimais em uma string representa um único byte codificado por esse número. Por exemplo, \x58 representa o caractere X; 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.