Перейти к основному содержимому

Удаление UTF-8 BOM в начале текста (string.strip_utf8_bom)

Объявление

обработанный_текст = string.strip_utf8_bom(исходный_текст)

Параметры

  • Исходный текст
    Строка, текст, из которого нужно удалить символы UTF-8 BOM.

Возвращаемое значение

  • Обработанный текст
    Строка, текст после удаления символов UTF-8 BOM.

Описание

UTF-8 BOM представлен тремя невидимыми символами в начале документа: "\xEF\xBB\xBF" (в исходном коде Lua строка, начинающаяся с \x и содержащая после неё две шестнадцатеричные цифры, обозначает один байт с таким кодом. Например, \x58 обозначает символ X; см. печатаемую часть в статье «Кодировка ASCII»).

Пример

txt = "\xEF\xBB\xBFXXTouch"
sys.alert(txt..', '..#txt) -- Вывод "XXTouch, 10"
--
txt = string.strip_utf8_bom(txt)
sys.alert(txt..', '..#txt) -- Вывод "XXTouch, 7"

Примечание: приведённый выше код использует функцию не из этой главы — sys.alert.

Полезные сведения

UTF-8 не требует BOM, хотя стандарт Unicode допускает использование BOM в UTF-8.
Стандартной формой является UTF-8 без BOM; размещение BOM в UTF-8-файлах в основном является привычкой Microsoft (примечание: Microsoft также называет UTF-16 с BOM «Unicode», не уточняя порядок байтов).
BOM (byte order mark, метка порядка байтов) предназначен для UTF-16 и UTF-32 и обозначает порядок байтов (byte order). Microsoft использует BOM в UTF-8, чтобы явно отличать UTF-8 от ASCII и других кодировок, но такие файлы могут вызывать проблемы в операционных системах, отличных от Windows. Дополнительные сведения см. в статье Wikipedia — Byte order mark